Monday, September 27, 2010

Happy Birthday Google (12 years old) !! :-)

Today google celebrates its 12th birthday! Started in the year 1998 by two stanford guys in a garage, google has been the one thing that has transformed the whole world. Began as a search engine, today they work on almost all the cutting edge technology in the world (rather they invent most of the cutting edge technology).

Happy Birthday Google (12 years old) !! :-)


Google has really become an integral part of almost all of our lives. Google co-founder Sergey Brin's dream when he initially thought about google was to "download the entire internet in his computer" and thats what they have achieved today!

As some rightly say, "when a noun becomes a verb, technology has really matured" and thats exactly what google is.

Happy Birthday Google !! May you make the life of more and more software engineers easy day by day !! :-)

Do you have a google moment to share ? Do it in the comments :-)

-Vignesh

Saturday, September 25, 2010

Bom Sabado - The orkut virus !!

If you are still one among those who give a damn about orkut, then this might be one thing that your really care about. Today, orkut has been hit by a vulnerability that is really a security threat for your account.

Bom Sabado - The orkut virus !!


The virus is called "Bom Sabado", meaning "Good Saturday" in portugese. This is yet another XSS attack, thereby making it the second XSS attack on a major website this week. Earlier this week, Twitter faced a similar attack. There is no official update from google yet on this issue.

What does it do?

When you open orkut and if you are affected by this virus (which could be possible if one of your friends are already affected), a piece of javascript will automatically run doing the following:

  • Makes your browser hang for a moment

  • Adds you to the attacker's communities (orkut equivalent of facebook fan pages) without your consent

  • Sends a scrap (orkut equivalent of facebook wall) to all your friends without your consent, with the text "Bom Sabado" and a piece of code that will do the same set of actions when your friend log in to his/her account



How to prevent this?

  • Unlike the twitter XSS attack, this is a severe one that steals your cookies and thereby impersonate your session. If you have logged in to orkut anytime today, clear your cookies and cache of your browser.

  • To be safe, change your google account password and security question. To do this, go to https://www.google.com/accounts

  • Do not visit orkut until google officially says that they have fixed it. For updates, keep looking here

  • If your account seems to be behaving crazy or if its totally compromised, then see here for a solution.

  • Delete your orkut account and join facebook !



I badly want to use orkut now!

If you badly want to use it now, then you can use this minor hack to do that. The virus seems to be loading the malicious javascript code from tptools.org and hence you can tweak this to point to something else in your hosts file.

Edit your hosts file (Windows - C:\windows\system32\drivers\etc\hosts; Linux - /etc/hosts) and add the following lines:
127.0.0.1 tptools.org
127.0.0.1 www.tptools.org

This tweak will make tptools.org will to resolve to your own system and hence the javascript will fail to load. Note that you are at your own risk, i am not responsible if your account gets compromised even after you make this tweak !!

I will try to update this post once there are some official responses from google.

-Vignesh

Random Thoughts !!

Today has been a really depressing day and i thought i will feel better if i write about something. Its really odd hours and i am wondering why i am sitting and typing something which, most likely, no one might even bother to read. But still, ever since i started writing my blog, it is one thing that i have been really obsessed with.

I know this post will not make any sense as i just wanted to get over time and scribble something. Here are some random thoughts that i have had about my blog ever since i have started writing it.

  • I first started writing the blog inspired by one of my college senior varunkumar. You can visit his awesome blog here

  • At the first thought, there were a few questions within me that will naturally arise to anyone who wants to start a blog. At first, i answered these questions myself as follows:

    • What will i write about ? - Some personal stuff and some technical stuff and hence i decided the description of this blog to be “From geekiest to craziest”

    • Who will read my blog ? - I thought of targetting my twitter/facebook followers initially and since then, i have been updating about my blog posts in facebook and twitter.

    • What do i get out of writing a blog ? - I did not know the answer for this initially. But now, i have figured out that every time you keep the last full stop on your post, you feel the immense pleasure of being able to convey something that people will really read ( and also that you have written something that google will really show in its search results !! )



  • The name of my blog, as many might not understand it. “Je L’ai Dit” means “I Said It” in french. I have described about this in the “who am i” page of this blog. Anyways, its just a small denotion that whatever the content of my blog is, i am totally responsible for creating it.

  • My blog is powered by wordpress and i use the theme InSense.

  • My bad (or good) luck, google started denying adsense for sub-domains a week before is started my blog. Adsense terms now states that you can apply for adsense only with a top level domain and not a subdomain.

  • As many might have not known, my blog has an alias URL http://www.jelaidit.co.in


As i said earlier, this post really does not makes much of sense, but it really has helped me to get my mind of out other things and given me a peace of mind. I really love my blog and i really love writing. Thanks to all you guys who have been keeping my blog going.

P.S.: I am not posting a status update on facebook/twitter about this post as it doesn't make sense.

-Vignesh

Thursday, September 23, 2010

Twitter onMouseOver Saga - XSS and much more !!

There cannot be a better time for me to write about XSS as the famous twitter recently came across with an XSS vulnerability that was exploited by many all around the world by forcing users to redirect to some illegal site or post/retweet stuff without their consent, etc. What the hell was wrong with twitter ? Why did all this happen ? In this article, i have tried to answer these questions.

Twitter onMouseOver Saga - XSS and much more !!


First let us be clear with the terminology. XSS stands for Cross Site Scripting (It is not called CSS because CSS already refers to Cascading Style Sheets). XSS is a way of injecting malicious code into a web page so that the users are troubled, user data is stolen, etc. If you don’t understand what that means, read along, you’ll understand it by the end of this article.

Before going into XSS, let me give a brief introduction about what Client Side Scripting is. Client side scripting (I don’t want to abbreviate this as it will again end up as CSS!) is nothing but a piece of code that gets executed within your web browser. When you open a website, the website is rendered as HTML along with some Client Side Scripts. For example, you click on a piece of text and a pop up appears saying “hello world”, then it is a simple script that has been run within your browser. An example of a client side scripting is JavaScript.

JavaScript can do things like redirecting the user to another website, accessing personal data (in the form of cookies, etc.) and much more. Twitter gets data from the user (in the form of status updates) and displays them in your timeline. Since client side scripts are nothing but pieces of code embedded along with HTML, the displaying part of twitter has to be clever enough to distinguish scripts and escape them (a simple example of escaping is to replace > with &gt; and < with &lt; as that will avoid the browser from misinterpreting data posted by user as an HTML tag - another simple example would be using printf(“\\n”) in C to literally print \n in the screen and not a new line).

Similarly, JavaScript code has to be escaped properly before being displayed or else there is a possibility that the browser will misinterpret the data posted by the user as JavaScript and start executing it which might cause potential damage. If the escaping is not done properly, then the attacker (usually the person who is always one step ahead of the developer) will be clever enough to exploit that display method to inject malicious JavaScript code to cause damage. Such an improper display mechanism is known as a XSS vulnerability and the attacks exploiting XSS vulnerabilities are known as XSS attacks. Twitter faced one such attack two days back.

Now to better understand how XSS attacks are performed, lets call our friends Alice, Bob and Oscar for help. So the following sequence of steps explain how an XSS attack is performed:

  • Bob hosts a website (in this case www.twitter.com) where users are allowed to make posts

  • Bob's website has an XSS vulnerability (in this case the javascript onMouseOver function vulnerability)

  • Alice and Oscar are users of Bob's website and Alice can view updates posted by Oscar (in twitter lingo, Alice is following Oscar)

  • Oscar spots the XSS vulnerability in Bob's website and decides to exploit it. So he makes a post that exploits the vulnerability (in our case redirect the user to some illegal website when he moves the mouse over the post)

  • Alice eagerly opens Bob's website and is redirected to a totally unexpected website as she accidentally moved the mouse over Oscar's post (to be worse, while her mom is watching from behind ;-))

  • There is also a possibility that Oscar can exploit the vulnerability and steal Alice's session information (cookies) and impersonate Alice

  • Thus, Alice is screwed (as always) !!



It is really bad that a website in the scale of twitter had such a vulnerability. But after all, no product is perfect. An official blog post from twitter said that this bug was created as a result of fixing some other issue. I personally feel that a company like twitter cannot afford to give such a lame excuse for it could have caused many celebrities profiles to have posted spam tweets and much more damage. Nevertheless, sites like twitter, facebook, etc. are the primary target for attackers these days and hence security precautions always has to be the number one priority.

Read more about this on twitter's official blog here.

-Vignesh

Monday, September 20, 2010

Experience in Express Avenue Mall :-)

I came to express avenue mall with my friend santy for a second show movie at Escape Cinemas (Inidhu inidhu at screen weave - 10.00 PM show). I'm writing this post as we came a bit early to the mall, we entered the arena around half an hour early than the scheduled start of the movie. This is the first time I am seeing a cinema hall totally empty before a show. We clicked a few pics of the brand new escape theatre interiors.


Experience in Express Avenue Mall :-)


A few quick facts that I've known/observed about Chennai's newest mall.


  • Express Avenue mall claims that it is the biggest mall in southern Asia (though I'm not sure about how true is it as I've heard that ambiance mall in gurgaon is bigger).

  • As with any other mall in chennai, all the shops are heftily overpriced and as a result whole of the weekend crowd bombards the relatively inexpensive food court (as food is costly almost everywhere in chennai these days) which creates a moor market like atmosphere in here.

  • Almost all the adult girls come with a pair and many gangs of guys can be seen. So, if you are a single guy and you came here looking for girls, clearly your are in the wrong place.

  • Weirdly, this place doesn't have much places to sit and spend time (even very limited sitting places available seem to be occupied always) and hence this is not a place to come when you're tired.

  • If you are planning for a gathering here and its the first time you're visiting, then make sure to define a good meeting point, as even the mall security doesn't seem to know the gate numbers properly.

  • Don't forget to note the area code and the color code of where you park your bike or else you are sure to spend a solid time searching it. And I think the same holds for cars too.


Overall, this is a good place to visit once in a while. Especially, it is good to visit here on a weekday to avoid the crowd. Chennai atlast has a mall that has international standards (really!!).


Visited Express Avenue Mall before ? Share your thoughts about it on comments.


P.S.: This is another post that is keyed in using swype. :-)


-Vignesh

Saturday, September 18, 2010

Swype - The next generation of text inputs !! :-)

People following me in twitter, facebook or my blog would have known that i recently joined the android community with the purchase of my htc wildfire. Ever since I bought my phone, there is this one thing that I'm madly in love with. It is supposed to be the next generation of input system for touch screens. With a simple tagline "Why type when you can swype", it is really one of the most amazing technologies I have ever seen in my life.

When I first got my phone, being the first time of using a touch phone, I was really happy about the basic touch input that is built in with android as it had a really nice auto corrector and I just needed to key in the text very very approximately. But the moment I installed and started using swype I never turned back. In this article I will be sharing an overview about what swype is, how to get swype for various smartphones and a few alternatives to swype.

What is swype ?

Swype is the most recent innovative technology for text inputs in touch screen based systems. Just like we have the T9 input system for traditional mobile phones, swype is for mobile phones with touch screens. In T9, there are either 3 or 4 characters assigned to a single numeric key and to key in text, you just have to press the correct combination of numbers associated with those particular characters and voila you have the text you wanted keyed in very easily. If there are multiple words possible for a particular combination then you choose the right word you wanted by either pressing the "*" key (in traditional nokia phones), or by pressing the down arrow (in sony ericsson and irritating motorola) or by pressing the "0" key (in the unconventional samsung phones). Once gotten used to, you will feel that T9 is the best way to key in texts in a mobile phone. It is indeed true and people even type without seeing the screen like we do in computers.



Swype is a similar technology for touch screen mobiles. In swype, instead of tapping each and every character in the qwerty virtual keypad shown in the mobile, you just have to elegantly trace through the path of the word you intend to type. Similar to T9, if there are multiple words in the path you traced, swype offers you the list of possible words for you to drag it into the input. You can be very approximate in your path trace yet swype recognizes your word almost perfectly all the times. Though it might sound simple and not very appealing at first, on using it you will realize that almost 90% of the words you type in have unique paths and hence, unlike T9, you very rarely will come across the ambiguous word choosing pop up.



Who can enjoy swyping ?


  • Android
    • Swype comes as a default input method along side touch input in many android devices.

    • If it doesn't come preloaded in your android device, then you can get the official swype beta from http://beta.swype.com. The official beta is closed now but you can download it through someone who has already registered with the beta was open (yes, it is legal to get any number of copies with a single registration! - and don't contact me as I didn't register when the beta was open).

    • If you didn't register for the official beta when it was open and don't know anyone who did, then this is the option for you. Download the apk file from some other source and install it in your device (which is what I've done in my phone). I am not posting any direct links here owing to legal reasons. It is available easily in 4shared.com. Find out the type of display your device has (VGA, QVGA, HVGA, etc.), download the appropriate version and install it.


  • Windows mobile
    • Few devices with windows mobile comes with swype preinstalled. I am not familiar about other options of getting swype for windows mobile.



  • Symbian
    • Swype has partnered with symbian and recently released a public beta for S60 5th edition based symbian phones (nokia 5800, 5230, 5233, N97, N97 Mini to name a few). You can download and install swype for symbian from Nokia Beta Labs. All the installation instructions are also briefed in that page.

    • One drawback i faced with swyping in symbian is that, most of the symbian devices have less sensitive resistive touch screens when compared to their capacitive counterparts in android devices. Although, it is convenient to swype with nails in the symbian devices which is not possible with the capacitive based android devices.




When is swyping easy ?

  • When you are just done with a call and your phone is slightly wet out of your cheeks

  • When have completely dry hands after a long rest of hands (e.g. after a sleep)


When is swyping not so easy ?

  • When you have just washed your hands and wiped it dry using a kerchief/tissue

  • When your hands are wet of course

  • If your fingers are a little bit bigger, then you may have to switch orientation every time you key in text


Alternatives to swype

Every emerging technology is never unique these days. There are always multiple implementations of a single technology and swype is no exception. Here are a few alternatives if swype that I have tried out.


  • Dasur SlideIT Keyboard

    • This is the best alternative for swype I have seen so far. I was using this before I could figure out swype installation in my device.

    • One feature that it had and swype lacks is shortcuts. You can store tiny shortcuts for frequently used lengthy words.

    • The dictionary is no where close to swype's preloaded dictionary of 60000 words. Although, many language packs are additionally available for free.

    • It is available for all major smartphone platforms (android, symbian, windows mobile and even for windows ce). It can be downloaded from the official market of your smartphone ( android market, ovi store, etc. ).

    • For more details visit here.


  • T-Swipe Pro

    • This is a swype alternative that is available only for android devices as far as i have explored.

    • It is a stable piece of software that is terribly slow in recognizing what you swipe.

    • The trial version shows you irritating pop ups asking you to register for full version which is definitely not worth upgrading to.

    • If you badly want to swipe and both swype and slide it key board doesn't work in your device ( which is a very rare case ), then this may be your final destination. I am damn sure you need the patience of handling a tortoise to use this.


To conclude, Swype is definitely one of the major breakthroughs in mobile technology and I am pretty sure that soon enough, swype will be the de facto standard for text input in touch screens. Hoping to see more and more OEM installed swype devices soon.

Note:
This article has been composed entirely in a mobile device using the following input systems:
  • This note is keyed in using the traditional touch input system for android

  • The section about SlideIT Keyboard was keyed in using SlideIT Keyboard itself

  • The section about T-Swipe Pro was keyed in using T-Swipe Pro itself

  • The rest of this article was keyed in using none other than swype itself :-)


P.S.: Thanks to AK Notepad.

-Vignesh

Thursday, September 16, 2010

SMS - Talk through mobile from facebook !! :-)

Various application layer protocols always impressed me. Especially HTTP, as my understanding about it has been pretty good. There has been one thing that i have been doing pretty good, site scrapping.

What is site scrapping? Defining it is very simple. It is the process of extracting some information from a website that has complex interface (with flash, ads, etc.) and using that information for our own purposes. Though scrapping many websites (especially government ones) may be illegal.

Here is one such application that i have developed. This application is purely a brain child of the HTTP i have understood. It provides an interface to the famous Free SMS Gateways in India 160by2 and way2sms through a facebook application. It has been one of the dead works that remained uncared for a long time. Now that i have a decent amount of online presence, i have refined it and trying to popularize it through my blog (should i call it blogvertise ?).

Using this application is simple. Register yourself at Way2SMS or at 160by2. Goto http://apps.facebook.com/smstalk. Add your account here and you are good to go. Though this application is not a big feat, it just provides a simple and clean interface (exposed as a facebook app) for the ad clustered interfaces of the famous free sms gateways in India.

Here are a few screenshots:

SMS - Talk through mobile from facebook !! :-)
SMS - Talk through mobile from facebook !! :-)
SMS - Talk through mobile from facebook !! :-)


Share your opinions/suggestions in the application's wall here or in comments.

-Vignesh

Wednesday, September 8, 2010

Else vs Elseif - A note about validations

Its 10'o clock when i'm writing this one (as opposed to the 7’o clock of the previous post). Today had been a productive day too with a lot of work done in a good pace. Today i had an arguement/discussion(FYI, arguEment is when you argue on a topic and argument is the one you pass to the functions in your program) with my colleague on a very very simple issue. It started when i was explaining about a piece of code i had written.

Going forward in this post, i am describing this problem and the discussion as a general article and not as a discussion.

To tell about the problem briefly, whenever we use a set of if else statements, should the last in the set be an else or an elseif ? Sounds simple right. Assume that we do these ifs in a system level program which on breaking with an irrelevant error is critical. The main points to be considered when approaching this problem are code readability and whether the code breaks (the code should not break the flow of the program by doing something unwanted). Again there definitely has to be a trade off between these two otherwise this would not be a topic to rampant an article about.

Consider a simple example of an if condition. If a boolean is true you perform an action and if the boolean is false you perform some other action.

Case 1 - if..else..:
In this case, there is an else at the end. So the code will look like this:

if a == True then return 1 else return 0


First of all, this code will always perform some action (but not necessarily the correct action). The problem with this code is that the second part is very loose. Even if the variable a has something other than False and True it will still be returning 0 which may not always be the expected behavior. Though it may seem that this option is never safe, at times it is. This type of modules will generally be some internal system code, at which point you may most likely not worry about things like input validation. So if your variable can have five possible states and you have two different action based on those states, in this approach you will be writing a piece of code like this:

if state == ‘state1’ or state == ‘state2’ then return 1 else return 0


Remember there are totally 5 possible values that state variable can take. Our objective here is to return 1 of the variable is in state1 or state2 and return 0 otherwise. This is exactly what we have wrote in this if..else.. sequence here. Is this the clean way of doing this ? Yes and No. When we are sure that we have done input validations on a high level layer and that the state variable may contain no erroneous value other than the expected 5 values, then this code will definitely suffice. If not, then we may have to rethink this since it will return 0 for not only the expected 3 values of that state variable, but for every other erroneous case too.

Case 2 - if..elseif..:
In this case, there is an elseif at the end. So the code will look like this:

if a == True then return 1 elseif a == False then return 0


Here, though we are in an internal system level module, we just put a little extra effort and add an else if constraint which makes the code stronger. Also, in the case of the 5 state example, in this case we will be listing out all the 5 possible values of the state variable verbosely and thereby in future you need not look up anywhere else for the possible values the variable can take (thus enhancing code readability). I always felt it was a good practice to consider all the validations in all layers of code as that would really help if we decide to bypass a layer for some reason.

It is very similar to doing the validations on both on the client side (using javascript) and on the server side (using a server side script like php) in a website. We do this because there is a possibility of bypassing the client side layer and invalid inputs may come to the server side and we don’t want it to break because of validations not being present on the server side.

Here, even though the variable is just a booelan, it is better to always have the most constrained form of the conditions so that with little effort you might be saving a big amount of code change when you decide to bypass a layer in the future.

The actual problem's statement now changes to this, when you have your entire system architectured into different layers (like user interface, application logic, backend, etc.) should you do validations upon entering each layer or is validation is enough in the top most layer alone ? The answer is again a yes and no. The only big point to consider before making such a decision is if you want to bypass a layer in the future then you have to change the code so that the validations are done appropriately.

Even otherwise, my opinion is that it is always a good practice to perform the validations on all the layers as there is a possibility of an input being corrupted (when a layer passes it on to the next layer or some such). This is how big a simple else vs else-if problem can lead to. When you write code that is not just going to be owned by you, it is always good to think of such issues before you write each and every single line.

This may seem like the dumbest article you have ever read. But to me, it has taught a good lession about where and where not to validate data.

Comments are welcome as always. :-)

-Vignesh

Monday, September 6, 2010

Infamous common problem !! :-)

I have had a productive day so far today. Its 7'o clock in the evening when i am writing this and i really feel like i have learnt a lot of new things today. I had a really long discussion regarding work with my team lead and he bought up an interesting point that i thought is worth sharing. I was wondering why noone had not put this formally yet (may be somewhere in the DBMS course).

It is one of the most recurring scenario in a software engineer's life that he may have to perform an action and print a log message corresponding to that action. The question is, how to keep these two operations atomic. Ok, now for those who are not familiar with the term, atomic operation is one that follows the "all" or "nothing" principle. A good example would be, if i transfer 1 crore to you, it involves two separate processes: 1) Debit 1 crore from my account and 2) Credit 1 crore to your account. This operation definitely have to be atomic as doing just one of them and not the other will make the bank go bankrupt. So thats an atomic operation (I wonder why it is called so as atoms themselves are divisible into 3 sub particles!!).

So whats with this action and log message you were talking about? Yes, coming to that, usually we perform an action (say increasing 1000 rupees in one's account balance) and to indicate that we have done this operation we write a message (probably somewhere to a log file) saying that we have increased the account balance 1000 rupees (and possibly include the timestamp). In this case, the presence of the message in the log file indicates that one's account balance has been increased by 1000 rupees. If that message isn't there in the file, then it means that we haven't increased 1000 rupees in the account.

Lets say that this operation (of increasing 1000 rupees in one's account) is to be done strictly once. No matter how many requests come, the operation has to be performed only once. A layman or a newbie programmer might think, ah, this is simple, i just have to look at the log file and if the message does not exist then i have to increase the balance by 1000 or else i should print an error message. This is what most of the people do without analyzing the possibily that the first part of the operation (increasing the balance) might have completed successfully and the second part of the operation (writing that in the log file) might have failed (due to some reason) in which case the operation might be performed more than once on receiving successive requests which can really result in a nightmare if the singleton-ness of the execution is really critical.

Since nothing is ideally (100%) atomic, it is impossible to achieve the exact singleton-ness of execution. It can be ensured that an operation is carried out no more than one time and it can also be ensured that an operation is carried out atleast once but not both (It is sort of equivalent to saying, <=1 and >=1 is possible but =1 is never possible).

Here I make a comparison of two different approaches to tackle this problem.

Approach 1 (Action First - Log Next):
Action(Completely) -> Log

This is the default approach that many people take without realising the seriousness of this problem. As i mentioned earlier, here there is a possibility that the action might be complete but the logging might fail, resulting in possibly multiple executions of the operation. Since this approach performs the action first, no matter how heavy the action is, the logging is done only after the entire action is complete. So in case of a heavy action (where only certain part of the code is singleton critical whereas the rest of the code can be run multiple times without any problem. Whereas it is not possible to separate the action into singleton critical and non-singleton critical parts in this approach, as the entire action is carried out first followed by the logging. According to me, this is one major drawback of this approach. This method gives the guarantee that the action is executed atleast once.

Approach 2 (Log First - Action Next):
Preparatory Action(Need not be singleton) -> Log -> Action (Singleton)

This is the approach that many people don't even know the existence of. Why not log first and action next? As i already said, now we can divide the action into two parts - singleton critical part and the non-singleton critical part. Now the execution goes like this, 1) non-singleton critical part of the action (lets call it "preparatory action" as it can afford to run multiple times). 2) Log the message and 3) singleton critical part of the action. So what is better about this approach? First of all, as i said earlier, this does not solve the problem completely. This approach gives the guarentee that the action is executed atmost once, which is slightly an expected behavior than the previous approach. Moreover, we are making the action lighter by splitting it into two parts. Even if the split isn't possible (there is no non-singleton critical section in the action), this approach still guarantees that the action is executed no more than once.

This is a simple yet powerful fact. It is never possible to make (as of now and as far as i understand) an action ideally atomic (meaning, executed exactly once). Post your thoughts on comments :-)

P.S.: The basic idea of these two approaches is my colleague's and i have portrayed that in my own words with my own examples.

-Vignesh

Sunday, September 5, 2010

Happy Teacher's Day :-)

I take this moment, thanking all my teachers from my primary, elementary, secondary, higher secondary and college to have made me who i am now. I will always remain thankful to all of you in my life. Thanks for making my life better.

Happy Teacher's Day :-)


I have always had the feeling that having a good teacher makes things umpteen times easier and better. Luckily enough, i have all the sweetest the most caring teachers ever (i am not listing any specific names as that would make this post veryyy long).

As our ancestors have rightly mentioned its "மாதா, பிதா, குரு, தெய்வம்".

-Vignesh

Google Chrome's Second Birthday !! :-)

Google chrome celebrated its second birthday two days back. Its been exactly two years before I read the official post in google blog stating that it is going to launch an open source web browser. I was surprised and was very excited to try it out at that time. Ever since then, i have been using only google chrome for all my primary internet work. And as a trademark google product, it has shown very rapid scale of development and it has matured a lot since the first release.

Along with its second birthday, google chrome version 6 has been released on the same day. The first thing i liked about google chrome release is the comic strip that they released along with it which beautifully explains the internals of google chrome in such a way that from tom, dick and harry to gnu, kde and dll guys can understand. If you have missed the comic strip, you can have a look at it here.

Google chrome currently holds 7.52% of the total market share of web browsers (Source). Surely it is very less when compared to Internet Explorer (60.4%) and Mozilla Firefox(22.93%) whereas chrome is relatively new and has had just two years when compared to Opera which, after 10+ years in the market, holds just 2.37% of the share. The key to chrome's success was that it always focussed on speed and simplicity. Apart from that the HTML5 support is being top notch. Since the project was started almost when HTML5 started to evolve, it is easy for chrome to easily adapt to HTML5 rather than other browsers whose code roots dates back years.

Google Chrome's Second Birthday


Here is an excerpt from chrome's official blog on its second birthday:
"Since Chrome’s first beta launch for Windows, we’ve brought our Mac and Linux versions up to speed, and continued to make the browser faster, simpler, and safer across all three platforms. We’ve also introduced a boatload of features, including a more customizable New Tab page, browser themes, side-by-side view, password manager, better privacy controls, built-in Adobe Flash Player, Autofill, automatic translation, HTML5 capabilities and synchronization of various settings such as bookmarks, themes, extensions and browser preferences—just to name a few. Finally, there are now more than 6,000 extensions in our gallery to enhance your browsing experience."

It is really amazing how big a product can get in a matter of two years. To me, when you are a company as big as google, i don't think there is any such thing as a small scale product release. Everything you do is in the scale of billions and trillions. Google Chrome has made my road in the web much better.

Here are some useful extensions that i have been using:

  • Google Mail Checker - Google Chrome version of Gmail Notifier

  • Google Similar Pages - A beta tool that suggests you pages similar to the current page

  • Google Translate - A really awesome plugin that suggests you and translates if a page is in a non-english language

  • TabJump - An intelligent way to group and navigate between your tabs

  • TinEye Reverse Image Search - More about this here

  • Chrome Bird - A twitter extension



Share your two year memories with Chrome on comments :-)

-Vignesh

Thursday, September 2, 2010

A Plant that lives on Facebook !! :-)

I recently came to know this plant that relies on facebook for its life. We all would have learnt in our secondary school that plants live with carbon-di-oxide and photosynthesis. But now, here is an innovation that connects the virtual and the physical worlds.

With the basic theme as, plants don't just grow with the things that we have learnt in our high school botany. Coming under the category of living things, they also require love, care and attention to grow. Connecting the offline and the online worlds has always been something i wanted to do and this is a project that has made me look at it with an awe.

This project, named Meet Eater, has been running since May and currently (September 2, 2010) has 3041 likes (including mine). This has been developed by John Bashkim belonging to the University of Queensland, Australia. The plant grows based upon the human interaction with it using facebook. It gets it nutrients when people become friends with it, write in its wall, etc. It even replies back to your posts (of course by a backstage human controlling its profile).

A plant that lives on facebook !! :-)


This is how Bashkim describes the plant:
"Meet Eater is a plant, but not one we're used to. This plant is watered upon the receipt of physical interaction, when it makes friends on Facebook and when people write on its wall. Behind this project is the idea that by introducing both physical and virtual levels of interaction the plant is able to make the move from being an object to being a creature. A creature you can become friends with on the Internet no less."

The facebook page has a link to view the live cam, where you can see the beautiful innovation in action. The Meet Eater garden is situated in the State Library of Queensland.

The facebook page also says:
"Meet Eater is rigged up with a system to register physical contact and social media interaction. Watering is triggered by human contact and nutrients are delivered when you start hanging out with it on Facebook."

A plant that lives on facebook !! :-)


So, go hang out with Meet Eater and thereby help it grow. Here is a link to the facebook page of Meet Eater.

Note: Thanks to mashable and allfacebook for the pictures.

-Vignesh