Web 3.0 – Introducing WebRTC

Web real time communication
web real time communication is available on google chrome

A few years back, Google launched it’s e-mail service and brought AJAX to main stream. AJAX combined the power of JavaScript and XML to bring asynchronous interactions to the web browser opening up the world of Web 2.0. With no browser refresh and re-directs, web applications started behaving like native desktop application, not 100% but at least they came closer. This is going to change forever…

Fast forward 2012. Introducing WEbRTCWeb Real Time Communication. WebRTC enables real-time audio, video and communication between browsers. The WebRTC allows peer-to-peer communication between two web browsers without requiring any third-party installation. Imagine launching your own chat application or sharing audio/video with your friends straight from your browser…no Skype, no third-party installation required…period!

What’s the  impact?

This technology will have a huge impact on the internet. Just the way peer-to-peer file sharing like Napster and later on Skype caused a transformation in the way we use internet…WebRTC will open up a whole new world of possibilities for the internet. There will be a new wave of innovation with young entrepreneurs creating innovative applications for video, audio and real-time communication.

Is it a Hype? or Reality?

It is closer to you than you think…check out the official website…WebRTC is already supported by Google Chrome browser. Recently, Microsoft officially announced the support for WebRTC. Here is a must read article on WebRTC .

Stat tuned…Web 3.0 is here and ready to transform your internet experience, one more time…powered by WebRTC.

Are you ready for the next wave?

Convert your Neighborhood into a Fiberhood

google Fiber
Fiberhood from google

Google is well known at throwing surprises by introducing innovative products and services. With launch on Google Fiber, it proved this again. With launch of Google Fiber, Google has formally entered into the homes of netizens (at least in the United States). Google Fiber is an internet service that offers 100 times faster internet than normal internet connection.

The only way one can get a 100 times faster internet is through fiber optic cables and it is a very expensive technology. And this is where the interesting part is. To reduce the cost, Google introduced the power of Group buying in a very innovative way. Here is how it works:

At the heart of Google Fiber is the concept of ‘Fiberhood’, a term derived from the word ‘Neighborhood’. Google gets a close group comprising of you and your neighbors to pre-register for their service. In simple terms, this means that you need to apply to Google Fiber and ask your neighbors to apply for it too. If the density of your neighborhood reaches a critical mass, you get a ‘Fiberhood’.  Google team will come to your area and install a ‘Fiberhood’  which is nothing but a Fiber optic base infrastructure for your area. It then distributes the internet connection to you and your neighbors through this base station. This works for everyone because the cost of installing the Fiber option infrastructure is shared. You can afford it..Google can afford it.

What Groupon did with group buying, Google is doing with selling high speed internet connections! The rise of internet will see more such innovative business models in the times to come.

So what are you waiting for, give a call to Google and convert your neighborhood into a ‘Fiberhood’ :)!

How do you know when an Idea is a ‘great’ idea

Everyday, we are surrounded by ideas. Ideas that emerge within our brains or ideas shared by other people, there is simply no dearth of ideas. The art is to find out the idea which does the trick and can make a huge difference. Of course, I am not discounting the execution bit here, but it is not the point of discussion in this article.

All of us in our lifetime not once but multiple times, get ideas which can change our world. However, we fail to execute and the reason why we fail to execute is because we ourselves ‘dilute’ the whole thing or just do not think that it’s indeed a great idea.

On of the things I have learned about ideas is that if you think a little bit more, there are some ideas, which just do not leave us that easily. They keep coming back to us. In my view, we human beings are designed with an inbuilt capacity to identify ‘great idea’. Here is a diagnosis recipe to identify a great idea:

1. The ‘great’ idea moves you in a small or big way. It inspires you to take an action
2. The ‘great’ idea stays there for a while..sometimes a week sometimes a few months
3. The ‘great’ idea touches others in the same way as you
4. The ‘great’ idea at times occurs to you as ‘day dreaming’

So, if you have an idea…watch it closely and discover it for yourself…

Does this idea inspire you?

How to set-up Ruby on Rails server on a Linux cloud (Ubuntu 10.04 LTS)

Setting up Ruby on Rails using passenger on a Linux server is a fascinating experience….provided everything works well :). I had to try several times before getting it right. I would like to share what I learned the hard way; so that, doing the same for you becomes a breeze.

I am assuming that you have some familiarity with Apache web server, Ruby on Rails and basic Linux commands. So let’s get started…

When you sign-up for a cloud server or a VPS, you get the server IP address, username and password. This is all we need! Log-in to your Linux server using the SSH protocol.

I have chosen Ubuntu 10.04 LTS (Lucid Lynx) as the Linux flavor. I prefer Ubuntu due to it’s simplicity compared to other Linux flavors.

Step 0: Update your Linux

Update your Linux source repository:

sudo aptitude update

In order to make sure our packages install correctly we need to set the locale information for Perl correctly:

sudo aptitude install language-pack-en-base

Now to keep the server secure, we will update the server using following command:

sudo aptitude update

Your Linux server is ready for some real action!

Step:1: Install Apache

You will be serving your website over the web and you need a web server. So, here is the command to install Apache web server:

sudo aptitude install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

Now open the main apache config

sudo vim /etc/apache2/apache2.conf

At the bottom of the file add the following line

ServerName demo

In the above line change the text “demo” with your ServerName of your Cloud Server hostname or a FQDN. Remember for the sake of example I am using the Server Name  as “demo”

Once done, save the file and restart Apache gracefully using the following command:

sudo apache2ctl graceful

Now, if you navigate to your cloud server IP address, you will find the default Apache welcome screen “It works”


Step 2: Install MySql

Use this command to install MySql server:

sudo aptitude install mysql-server

When you are prompted for your root password, enter it and press OK

When you are prompted for your root password, enter it and press OK

After the installation is finished, it begins to run your server. Your MySql server is ready.

Securing MySql

The default MySql server set up is unsafe especially when your server is going to be exposed in public. It’s important to secure your MySql server installation. Let’s secure it by using the following command:

sudo /usr/bin/mysql_secure_installation

When you are asked for your current root password, enter the password you chose earlier and press Enter.

Because you have already chosen a root password, press N and then Enter.

You will be prompted to remove the MySQL anonymous users. For security reasons we want to do this. The text above the question explains this in more detail. Press Y and then Enter.

When you are asked if you would like to disallow remote login for the root user and only allow connections from the server itself, press Y and then Enter to keep the server secure.

MySQL ships with a default database called test. You do not need this and can delete it. Press Y and then Enter to delete the test database and it’s associated users.

This step reloads the user settings (called privilege tables) so that all user changes take effect. Press Y and then Enter to continue.

That’s it your MySql server is now secure and ready for production use.

Step 3: Install Ruby, Ruby Gems and Rails

Note: we will be installing Ruby 1.8.7 in this example. If you want to choose the latest version of ruby simply find out the latest version and replace it in the following command.

sudo aptitude install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 libreadline-ruby1.8 libruby1.8 libopenssl-ruby

Once the Ruby packages are installed, we need to symlinks from the installs to the locations every program would work:

sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby
sudo ln -s /usr/bin/ri1.8 /usr/bin/ri
sudo ln -s /usr/bin/rdoc1.8 /usr/bin/rdoc
sudo ln -s /usr/bin/irb1.8 /usr/bin/irb

Once done, use the following command to verify if everything is working correctly:

ruby -v

You will probably get something like the following in return:

ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]

Now let’s go ahead and install Ruby Gems from source. The reason why we are doing this is to ensure that we get the latest and most stable version of Ruby Gems onto the Cloud Server and the easiest way to do that is by installing from source.

Let’s create a folder called “sources” in our root directory

mkdir ~/sources

Now go inside the “source” directory

cd ~/sources

And download the latest version of Ruby Gems. At the time of writing this article, the latest version was 1.8.11

wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.11.tgz

Once the file is downloaded, unpack  it and go inside the unpacked directory

tar xzvf rubygems-1.8.11.tgz
cd  rubygems-1.8.11

Now we can compile it:

sudo ruby setup.rb

Once the compile and install process is complete (it will take a couple of minutes or less) you will get the following message:

RubyGems installed the following executables:

If `gem` was installed by a previous RubyGems installation, you may need
to remove it by hand.

Now lets create another symlink

sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

Once done, check the version of Ruby Gems installed by typing the following command

gem -v

We need to update the gems to the latest version

sudo gem update --system

Now the foundation is ready, so let’s go ahead and install Rails:

sudo gem install rails

You can now install any gems specific to your rails application. I will leave that up to you and lets’ move down to the last and the most important part of this installation i.e. Passanger a.k.a mod_rails installation.

Step 4: Mod Rails Installation

Mod Rails Installation can get tricky at times if you do not follow the instructions carefully. Let’s install the passanger Gem first:

sudo gem install passenger

Once completed, we need to install the Apache2 Module for passanger. Without installing this module Apache will never know that it should route the incoming requests to Passanger. So let’s go ahead and install it:

sudo passenger-install-apache2-module

Now, here is the surprise. The system will not allow you to install Passanger module for Apache.  Apache 2 module requires some dependencies before it can install the Passanger module. The good part is, it will tell us which dependencies are required and the command line to install those dependencies. So carefully copy/paste all the commands mentioned in the error screen and start installing the dependencies one by one.

Important note:  This is the area most susceptible to problems. If some dependencies do not get installed using the command mentioned in the error output; instead of using the usual “Aptitude” Linux command use the “Apt-get” command to install those dependencies. I could figure this out after wasting a lot of time!

Once all dependencies are installed, we can try installing the Passanger apache 2 module again:

sudo passenger-install-apache2-module

Everything should go well. At the end of installation, you will get an output similar to the following:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6
   PassengerRuby /usr/bin/ruby1.8

Copy these lines and paste them at the end of your “apache2.conf” file.

Note: The above output is specific to every installation. So do not copy/paste the above output. Instead copy/paste the output which you got from your installation.

Once done, restart Apache:

/etc/init.d/apache2 restart

Bingo, you just installed a Ruby on Rails Server from scratch. Now start deploying and sharing your app to the world!

Thanks for coming this far….Let me know how your experience was following instructions in this article and if I can improve any aspect of it further.

New JavaScript framework – Batman.js

While searching for a JavaScript solution, I bumped across Batman.js. I tried the example below and just loved it:


After going through some documentation, here is what I found:

  1. Extremely  light-weight
  2. Less and clean codes
  3. Very flexible in how you want to use it (server side v/s. front end)
  4. Works with Jquery library
  5. A lot less painful as it uses convention over configuration
I would personally love to use it for  my own project.  A word of caution – This is a relatively new framework. So if you are looking for a rock solid thing, this might not be the right time. However, if you want to experiment and be a little more adventurous, just go for it…you are going to love it!

5 reasons to switch to Linux from Windows

A couple months back, I switched to Linux using the Ubuntu Windows Installer. First few days, I was on and off, not really getting along with the Linux GUI which seemed a bit raw to me. My webcam did not work for the first couple of days, which I finally fixed with the help of Ubuntu documentation. The display drivers, sound drivers and even my broadband connection worked almost instantly.

And that’s it. I have never looked back to windows. Here are a few great things I discovered while using Linux:

Amazing apps

Linux ‘Ubuntu software center’ has thousands of amazing free apps, Just the way we use IPhone apps.

Very stable

I never had problems like the way we have in windows – the system never crashed even if a software is not responsive.

Great user experience

I installed the KDE Plasma Desktop and it has such a great user experience, very much in the lines of a Mac. The smooth graphics and fonts rendering are the stuff you get addicted to very quickly.

Peace of mind

Finally NO virus/trojans to deal with, NO anti-virus software to download, what a peace!

Everything you need – out-of-the-box

Kbuntu desktop has everything you need to be productive. The LibreOffice suite is exceptional for your documents, spreadsheets and presentation needs, GIMP editor is a powerful graphics editor and Banshi Music player to satisfy your ear buds.

Ubuntu Linux has just wowed me with its awesome power and usability. I have pushed back my plans to switch to Mac…Linux has provided me all I needed.

….goodbye windows, the Linux decade has begun….

Five great tools for internet entrepreneurs

With the phenomenal growth of internet users, flourishing open source technologies and availability of on-demand cloud computing, it has become far less expensive and attractive to begin your internet business. Here are five tools I found indispensable for every internet entrepreneur. Using these tools, you can kick-start and operate your internet business at negligible infrastructure cost.

1. Website/Content Management System

For the front-end customer facing website and blog, you certainly need a CMS/blogging platform. If you are slightly techie and can do things on your own, I recommend using WordPress. If you are not techie and need something out-of-the-box, go for Weebly.

2. Hosting

With myriad choices in hosting, this part gets trickier. If you are looking to play a long innings, I strongly recommend using Rackspace cloud for hosting, even if you are new to cloud hosting. The reason is – for less than $30 a month, you get your own cloud sever which you can scale up or scale down in minutes. I found Rackspace cloud control panel the easiest to work with and their help/documentation/support is awesome!

3. Visitor Tracking

The third most important thing to do for your web business is tracking your site visitors and finding out what attracts them and what puts them off. Fortunately, Google analytic free edition does the job exceptionally well.

4. Up-time and performance monitoring

Your internet businesses relies on the availability of your website. It is critical to keep a watch on your website up-time and performance. Pingdom offers website up-time and performance monitoring completely free for one website. You can always opt for advanced (paid) features at a later stage.

5. E-mail/Online Collaboration

Your web business needs its own e-mail and online collaboration tools. Google apps (free edition) is the answer. Recently, Google has buried its free Google Apps edition inside its hyperlinked pages such that it is not easily found. Click here to sign up for Google Apps free edition.

I hope these tools become helpful in your journey to be a successful web entrepreneur. What tools do you use?

Good software is addictive

Way back in 2006, someone told me that he has got an access to Google’s e-mail service and he can invite me to use it. I got the invite and since then, I am using Gmail, everyday. As I begin to use Gmail, unknowing and gradually my usage of Yahoo mail got lesser and lesser to a point where I could not even remember when was the last time I check my Yahoo mail.

I am sure there will be many of you who have experienced the same. There is nothing wrong with Yahoo’s mail service (which all of us used for many years) but there was something intimidating about Google’s software. It created a pull effect on users and people got used to it, to a point where they got ‘addicted’ to it.

The above story tells us an alarming truth about software usage patterns. People all over the globe are now addicted to ‘great usability’ and gradually they are switching from old school software to the software that provides them great usability – an addictive user experience.

A few more examples of ‘addictive’ software which I am aware of:

Is your software addictive?

The ‘software trap’

Organizations and software development teams often get into what I call the deadly ‘software trap’. This usually happens in 3 stages:

Stage – 1. A happy beginning
Software is created to solve organizational problem. Everyone is happy, people love the software

Stage – 2. The demands keeps rising
As organization evolves, people demand more – ideas are thrown in from all sides – software team gets into reactive mode, they roll out features to satisfy immediate needs – innovation and foresight takes a back seat.

Stage – 3. Software becomes hard to live with
As more layers of software are added, it gets difficult to modify it – the pace of change reduces – the software is not in sync with the organizational change. Software becomes yet another problem to be solved!

Finally, there is stage when software stops evolving, the development team gets into defense mode, users get cynical about the software, managers begin the blame game.

Getting into this trap is almost a natural process (thanks to the way human beings are) but it can be avoided with some discipline and simple measures.  I will write more about these measures in future articles.