Aside

The 16th match of ICC T20 World Cup was a forgettable one. Aussies thrash India chasing 140 odd runs with 9 wickets and 5 overs to spare. An ultimate thrashing even a neutral viewer would like to forget. This match underlines the recent trend of whitewashes that India succumb to. Not only did they surrender to a whitewash in the England and Australian tours, India has also the habit of losing badly like the second one dayer against the hosts Sri Lanka. Why is it this happening to India, who were coveted with the highest trophy in World Cricket. Why can’t the Indians perform? The answer may lie in the captain’s attitude towards cricket.

Dhoni is without doubt the coolest cricketer ever to captain a national team. Statistically he’s the best Indian captain ever. He’s been praised for being as cool as a cucumber during crunch situations. Individually he has had tremendous success in the ODIs, ranked number uno in the batsmen list, one of the best finishers of the game. He’s had quite a bit of success in the test as well as one-day formats (Most of them at home, one might argue). However his nature of being dead cool has also spelled doom for the side. He is a street smart cricketer, something inherited from where he lives. His “Chalta hai” attitude, where he doesn’t take most things seriously, has affected how the team looks at the matches. Yes, one needs to enjoy the game to play well. But when you take things more lightly than required, things fall apart.

Take for instance his taking the game to the last over. Whenever India is chasing down a sizeable total, Dhoni more often than not takes the game to the last over. Initially he was being praised for this behaviour, some stating that Dhoni always has the game in control. I would say he was lucky he could win most matches despite this suicidal action. He has mellowed down his batting, from his blistering knocks of 140s and 180s, to the 50s he regularly gets taking India home in the last over. However he has started to pay the price for this unnecessary action, the best example being the only T20 match against Kiwis at Chennai. Even when the writing is on the wall, Dhoni continues to do this. “Chalta hai bhai”, I bet he would say.

Then there is his “realistic” captaincy. People regarded him as the one cricketer who can read the game situation the best. Yes, he did so, but that was in his in early days. Now though he has become adamant on that. You can see this “realistic” style of captaincy in his field placing. He can get defensive very quickly when a batsmen goes berserk. He’s known to side with players that only he knows why anybody would put them in the team in the first place (No offense Ravindran Jadeja, but there are better players than you). Due to this, Dhoni hasn’t been able to inspire the team when they needed him the most. The whitewash India faced at the hands of the English and the Aussies could have been avoided had India played with a positive frame of mind, attacked more. But I guess a part of the blame could go to BCCI for not having groomed the bowlers well for these tours.

Dhoni needs to rethink his strategy. He should be more proactive. He has all the ingredients to be one of the greatest captains in cricket. I admire his selfless attitude, letting the boys enjoy the adulation of winning some tournament. Many senior players have praised the atmosphere in the dressing room, terming as the best they have been in, after Dhoni became the captain. And his batting, though unorthodox, is very effective at dealing with any bowling attack in the world. Dhoni should put more faith in the young bowlers, give them an attacking field and make them bowl the lengths that can trouble the batsmen. But with his intentions to retire soon, we may never see him change this attitude.

The next world cup is a couple of years away. A lot of tours beckon the Indians which will test their mettle. Sure, our bowling attack is the weakest among the top five teams. Our batting is in muddy waters after the departure of Dravid and Laxman and age fast catching up with Sachin. But if one thing can change, it the cricketer at the helm of the the Indian team. India is better served if Dhoni can change his attitude and approach every game with a bit more aggression, bit more optimism. The future looks bright, with Virat Kohli almost a certainty to take over after Dhoni. Kohli being a far more aggressive player than Dhoni, reminds very much of the Ponting at his prime, both in his batting style and in spirit. The India would do good if the “Ponting of India” can rise at the right time.

From one mountain predator to another.. My View on transition from Snow Leopard to Mountain Lion

Last night it finally happened. I got Mountain Lion! The new OS X update popped up in the App Store, having waited for the time since it was announced during Apple’s earnings report. With a 4mbps connection, it took around 4 hours to download and install in 30 minutes. I must say this was most seamless OS update I have ever seen on a computer. After a day spending with it, the $20 upgrade seems total worth it!

I have a 13″ Macbook Pro Early 2011 edition bought during August. It came with Mac OS X Snow Leopard and I did forget to get the free upgrade to OS X Lion. Snow Leopard was rock solid, may I dare say it’s the best of both worlds – in aesthetics and in UNIX. Very soon after the purchase MBP is my favorite machine!

I wanted to upgrade to Mountain Lion for a few reasons

  • A geek myself, so will vouch for anything that’s new
  • Apps Compatibility
  • It’s just $20!
  • Snow Leopard and Mountain Lion – both live in the mountains.. :D

So how’s it?

For starters installation was seamless (wished I had a faster internet connection, people in the US downloaded the same in half an hour). There was a bit of stutter at the app store, came as “this installation file is invalid” or similar. Anyways the download went through and installed in around 30 minutes I believe, I slept off half way through. The next day I got up and was greeted by a metal grey screen login screen. There was the setup of iCloud and automatic updates and the new look. All my settings and files were as it was before. So to reiterate, the most seamless update!

Performance wise, it’s pretty good. But I suspect it takes a little more memory than Snow Leopard did. Good thing I did double the RAM Apple provided.

One thing that’s missing is the expose. Instead it’s the Mission Control, where all apps appear in one place with full screen apps occupying the top row. It’s sort of a soup of applications grouped together in one area and full screen apps occupy their own space. Though the Mission Control is ok, I can’t figure the concept of full screen. I mean I can’t switch to a full screen app from a non-full screen app using Command-Tab.

There’s this Launchpad, apps menu which is inspired by iOS. It looks nice and good way to reach to an app. Every feature has been tweaked, the new multi-finger gestures are a 50:50, re-touched UI, and the minor things. I’ll list out a few tweaks and niggles that caught my eye

  • While in a full-screen app go to launchpad and come back, sometimes the dock remains there, had to go to launchpad and back again to hide it (Oh yeah I put the dock on the left hidden, gives more space to cramped 13″ screen)
  • Finder has now the option of “All My Files” which shows all files in groups – documents, music, videos etc. I don’t find it useful, spotlight search is very powerful enough.
  • I like the twitter integration in the notification bar. Can’t wait for Facebook integration!
  • The 3-finger swipe for going back while browsing a web page is now a 2-finger swipe. It can be issue as it’s used for scrolling too. Three finger swipe to left or right brings full-screen apps in view.
  • Now lot more animations, scrolling animations look more natural and iOS like.

There are lots more changes, Ars Technica comprehensive review has touched on almost all aspects.

Is the upgrade worth it? Totally, if you ask me. It may not be a radical change, but some of the small new features are good (haven’t used reminders, notes, iCloud etc) and the existing features haven’t much. I as developer am concerned on few things like terminal, operability etc which thankfully is not being hampered. Plus with this new update all the new apps and updates are compatible, I can tweet right off my notification bar. Some things I miss, the Expose Spaces, might be the only reason you as a Snow Leopard user might not want to upgrade. Other than that, there’s no reason why you should not be downloading it already!

PS: Few links to help you tame this new beast

http://lifehacker.com/5928799/everything-you-need-to-know-about-os-x-mountain-lion

http://www.engadget.com/2012/07/25/apple-os-x-mountain-lion-10-8-review/

Android and Google App Engine – Build a simple message board app

Right. I have been building apps for sometime now and I realize I haven’t posted anything related in my blog! So this is my first tutorial based on Android and GAE, and really hope to put some more posts on other super cool technologies I have been learning. So this can be part 1 to a series of posts.

Today I’m gonna show how you can build a simple Android app that can connect to the server hosted on Google’s servers through Google App Engine(GAE). I will focus more on Android here and the connectivity will be done via localhost. It’s pretty easy to build sites on app engine and they have exhaustive tutorials for that.

Anyways the application we are going to build today is a Message board, that is anyone with some username can post a message to the public. Imagine that to be a simplified version of the Twitter. I’m not adding any authentication here (Might come up in future posts) and in trying to keep it simple I have not included exception handling and checks, which btw are very very important. Possibly I will update this post with these additions. Plus I deeply appreciate anyone who can suggest on how to improve this tutorial.

What you would be needing today on your machine is Eclipse with Android ADT plugin and Android SDK in the machine, the Google App Engine Launcher and well a text editor to edit the python and other files in the app engine application. So let’s begin!

Step 1 – Build the app engine application:

Today we are going to build a simple REST based application. If you are using Google App Engine Launcher, then you can create a new application from it’s options and automatically builds you the app.yaml . 

Edit the main.py. Create two models – Message and User.

class User(db.Model):
	# username
	username = db.StringProperty(required=True)
	
	def toDict(self):
		user = {}
		user["username"] = self.username
		return user

class Message(db.Model):
	# Message Content
	content = db.TextProperty(required=True)
	
	# Date Created
	created = db.DateTimeProperty(auto_now_add=True)
	
	# Owner
	owner = db.ReferenceProperty(User,collection_name='messages')
	
	def toDict(self):
		message = {}
		message["content"] = self.content
		message["date_created"] = convert_date(self.created)
		message["owner"] = self.owner.username
		return message

Now create REST handlers for these models.

class UserHandler(webapp2.RequestHandler):
	def post(self, id):
		#logging.info(self.request.get('username'))
		data = self.request.get('username')#json.loads(self.request.body)
		user = User.all().filter('username',data).get()
		if user == None:
			user = User(username=data)
			user.put()
		return self.response.out.write(json.dumps(user.toDict()))
		

class MessageHandler(webapp2.RequestHandler):
	def post(self, id):
		try:
			data = json.loads(self.request.body)
		except ValueError:
			data = {}
			request = self.request
			data['username'] = request.get('username')
			data['content'] = request.get('content')
		except:
			return self.error('403')
		user = User.all().filter('username',data['username']).get()
		logging.info(data['username'])
		if user:
			message = Message(content=data['content'],owner=user)
			message.put()
			return self.response.out.write(json.dumps(message.toDict()))
		return self.error('403')
	
	def get(self,id):
		if id != '':
			message = Message.get_by_id(int(id))
			if message:
				return self.response.out.write(json.dumps(message.toDict()))
			return self.error(403)
		try:
			data = json.loads(self.request.body)
			messages = User.all().filter('username',data['username']).get().messages
		except:
			messages = Message.all()
		messages_to_send = []
		for message in messages:
			messages_to_send.append(message.toDict())
		return self.response.out.write(json.dumps(messages_to_send))
	
	def put(self,id):
		if id != '':
			data = json.loads(self.request.body)
			message = Message.get_by_id(int(id))
			if message:
				message.content = data['content']
				message.put()
				return self.response.out.write(json.dumps(message.toDict()))
		return self.error(403)
	
	def delete(self,id):
		if id != '':
			message = Message.get_by_id(int(id))
			message.delete()

What’s left here is the main handler and if you had like, a test handler with a test html that has forms to test the app handlers.

Once done, check the app out using the preview option and see if everything works fine.

We have a working application, now we move on to android.

Step 2 – Build Android app:

We will have an Android app that will have a ListView to display all the messages and a button which will lead the user to create a message.

First the Main Activity will have a ListView that is populated by the messages from the app engine app you have just created. It also has a button that sends an intent to another activity that creates a new message. I called this app Post a Message that you can find on my github.

public class PaM_Main extends ListActivity {
	Handler handler;
	
	
	private OnClickListener postMessageListener = new OnClickListener() {
		
		public void onClick(View v) {
			Intent postMessageIntent = new Intent(PaM_Main.this, PaM_New_Post.class);
			startActivity(postMessageIntent);
		}
	};
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pam_main);
        
        handler = new Handler();
        Button postButton = (Button) findViewById(R.id.post_button);
        postButton.setOnClickListener(postMessageListener);
    }
    
    @Override
    protected void onResume() {
    	super.onResume();
    	new GetMessages().execute("");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.pam_main, menu);
        return true;
    }

    class GetMessages extends AsyncTask<String, Void, String> {

		@Override
		protected String doInBackground(String... params) {
			String uri = "http://10.0.2.2:8090/messages";
			HttpClient httpClient = new DefaultHttpClient();
			HttpGet httpGet = new HttpGet(uri);
			//Log.d("loltale:params", Integer.toString(params.length));
			
			try {
				HttpResponse response = httpClient.execute(httpGet);
				HttpEntity entity = response.getEntity();
				
				if(entity != null) {
					return EntityUtils.toString(entity);
				}
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}
		
		@Override
		protected void onPostExecute(String result) {
			super.onPostExecute(result);
			Log.d("PaM:result:", result);
			try {
				JSONArray messages = new JSONArray(result);
				ArrayList<PaM_Message> list = new ArrayList<PaM_Message>();
				if (messages != null) { 
				   int len = messages.length();
				   for (int i=0;i<len;i++) { 
				    list.add(new PaM_Message(messages.get(i).toString()));
				   } 
				}
				
				final ArrayList<PaM_Message> mList = list;
				handler.post(new Runnable() {
					
					public void run() {
						setListAdapter(new MessagesAdapter(getApplicationContext(), mList));
					}
				});
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
    	
    }
    
    class MessagesAdapter extends ArrayAdapter<PaM_Message> {
    	private List<PaM_Message> messages;
    	
    	public MessagesAdapter(Context context, List<PaM_Message> messages) {
    		super(context, android.R.layout.simple_list_item_2, messages);
    		this.messages = messages;
    	}
    	
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		TwoLineListItem view;
    		
    		if(convertView == null) {
    			LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = (TwoLineListItem)inflater.inflate(android.R.layout.simple_list_item_2, null);
    		}
    		else {
    			view = (TwoLineListItem)convertView;
    		}
    		PaM_Message data = messages.get(position);
            view.getText1().setText(data.getMessage());
            view.getText2().setText(data.getUser());
    		return view;
    	}
    }
} 

The New Message Activity will have two edit boxes and a button which will create a new message. Also note that I am creating a user of the username first and then post the message.

public class PaM_New_Post extends Activity {
	EditText contentEdit, usernameEdit;
	
	private OnClickListener postMessageListener = new OnClickListener() {
		
		public void onClick(View v) {
			String content = contentEdit.getText().toString();
			String username = usernameEdit.getText().toString();
			Log.d("PaM:content:username:",content + ":" + username);
			if(!content.equals("") && !username.equals("")) {
				String user_result = new PaM_API().postUser(username);
				try {
					JSONObject message_result = new JSONObject( new PaM_API().postMessage(content, username) );
					if ( message_result.getString("content").equals(content) ) {
						Toast.makeText(getApplicationContext(), "Message Successfully posted!", Toast.LENGTH_LONG).show();
						contentEdit.setText("");
						usernameEdit.setText("");
					}
					else {
						Toast.makeText(getApplicationContext(), "Something wrong... :( ", Toast.LENGTH_LONG).show();
					}
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
			else {
				Toast.makeText(getApplicationContext(), "Some fields missing", Toast.LENGTH_LONG).show();
			}
		}
	};
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.new_post);
        
        contentEdit = (EditText)findViewById(R.id.messageContentEdit);
        usernameEdit = (EditText)findViewById(R.id.usernameEdit);
        ((Button) findViewById(R.id.postNewMessageButton)).setOnClickListener(postMessageListener);
    }
}

Few things to note, if you are testing on your system, you need to put http://10.0.2.2:/ to the uri the android app will connect to the GAE app. And do remember to change the url when the app is deployed to google app engine.

That’s it! You can run the android app and check it out. Plus if you deploy you GAE app, then anyone can access your app and post on the message board! The code’s on github

Hope this post was helpful. In the next series of posts, I will try to show a little more complex apps plus use some awesome frameworks like Backbone.js, Knockout.js, Node.js and many more to make some really cool apps!

Note: There will be a lot of revisions to this. This is my first attempt in writing a tutorial, so will be glad to know I can make this post better. Suggestions welcome!

Thoughts on WWDC ’12

It’s been quite a while since the last post. Actually I have a lot of drafts up in the wordpress dashboard, but remain as it is. Wish this one makes it through!

Apple’s World Wide Developer Conference commenced yesterday and boy was it good! It’s been sometime since people came of being excited from an Apple’s event since Steve Jobs demise. Actually I had assumed so as every event after same has been met with criticism and letting down expectations. This time though they seemed to have arrested the slide. I’m going to pen down my thoughts on this event and what to expect from Apple in the future.

First, let me get this straight. I have followed the recent Apple conferences with the aid of tech sites, Engadget, Gizmodo to name a few. More so I have begun to develop a liking towards Apple’s philosophy with products I own. Whatever I criticize is just for fun and more of letting my mind free of it. I welcome any kind of comment, though I don’t expect much. Anyways here goes.

Continue reading

My thoughts on Cricket in India – Part 1

I am a cricket lover. Cricket is my passion. It’s in my blood. But hell, I cannot be beat my friend Nishant. He thinks, talks (literally), eats and sleeps cricket (guess it’s not the right phrase, though I hope you get what I mean). He’s more into cricket than I can ever be. For instance during my training in Infosys, another of my friend Sai Ram, rued badly that he missed the cut to 100% by 1%. He was mad at himself, cursing all he could on his head. Nishant tried to cool him, but Sai Ram retorted “You never know how I feel not getting the 100%”. To which Nishant replied “I know exactly how you feel, it’s just like how Azharuddin had felt when he could play only 99 Tests. And he’s from Hyderabad, just like you”.

But that doesn’t stop from being critical on the current Indian team. You might ask “What’s wrong with them? They are the best team India has produced so far, save the English series, they were on top most of the times!”. I have to agree that this is by far the best Indian team, the one team that can dominate on every turf around the globe. Continue reading

The Midnight Ride…..

“Aditya, you need to change that code now. If we don’t change it before we give it for System Testing, we are doomed!” My Team Lead rants over the phone. It was the same old thing, I knew it would be this when I joined Infosys. “Ok, I’ll try my best to do it…… ” and then I glanced on to my watch. 20:05. “Hey I’m already late for home, can I do this by Monday?” I asked. “O Aditya. You know how important this change is.” She said. After a pause “Ok, but you gotta come as early as possible. When can you come? Your usual time of 11 in the morning should not happen”. Oh what the heck, I thought. “I’ll come by 9 sharp, Ok?” I offered. “Ok better come by that time, otherwise I won’t have time even to tell you the code changes”. And off I went. Shutdown my computer, picked up the headphones and the charger, and after 20 minutes I was at the station, munching on the peanuts. The train came and I, as usual, hopped on at the last moment and stood by the wide open door, or on the footboard. I put on the headphones and started playing my favorite for the moment – “Good Girls Gone Bad”. As the train swiftly moved, I saw the road. The wide open road. Very few vehicles were travelling on it. The 4-lane GST was almost empty, and I wondered how wonderful it would be to ride on Schwinn through these roads, the weather was perfect, cold breeze flowing by me. And then it struck like a bolt of lightning. Why not ride now?

It was wild. The wildest idea I have ever had in the past few months. Riding on my Schwinn in the middle of the night through the dark lanes of the GST? It was very tempting! I hadn’t ridden for weeks, maybe months you can say. The prospect of me getting up early to get a good decent ride through the GST without much interruption was growing dimmer after the initial first month. Either I had stay up all night doing some code or chats, or work hangs me from getting proper sleep, mosquitoes and dreams alike ready to disrupt my sleep. Yeah, I maintain that you need proper sleep before you can think about such a ride. It’s dangerous riding on these highways especially with druck drivers driving the massive lorries. It’s been just too long a time for me to hold on to not riding. And the clear sky, the bright moonlight, the cool breeze and the empty roads, there was no stopping me from hopping on to the Schwinn and ride!

And so at quarter past 12, midnight, I stealthily took out my Schwinn. My roommates were giving the CAT exam the next exam and I really don’t want to disturb them cuz of my adventure. The weather was the best, but there were few spine-chilling barks from the street dogs outside. Nevertheless, I set out for what would be my first real night ride!

The first few minutes were just, I’m going to be honest here, intriguing. Cows near blocked the path from my house to main road, packs of dogs howling and barking as usual and few people moving here around, probably going back home after tiring day at work, unaware that a crazy rider is about to start his journey! I was wearing the fluorescent yellow over coat for the first time, obvious that it’s a necessary precautionary measure for riding in the night. I did not fit the headlights and now I realize how important it is. The interior roads for the most part were lit, but those which weren’t were pretty darn dark! As I entered the Perungalathur junction, a group of policeman, apparently patrolling for the night, called me up “Thambi, stop there”. A sort of nervousness got into me, I guess when you are stopped by a policemen in the middle of night you are bound to. So the police started interrogating me as to what am I doing at this time of the night and where am I going. Then they went on advising me that crimes have increased in the area and that I shouldn’t be around. When I assured them that I will be riding along the GST and I’ll be back, they let me go. And feeling like a free bird I raced away to the GST and crossed to the other lane of the road, the one that goes away from Chennai. As is the case the lanes weren’t empty, on the contrary it was filled with trucks and buses plying on the midnight stretch. But nothing bothered as rode along, feeling more confident and focussed as ever. The latter surely is very very important.

Focus is everything here. One inch outside the shoulders of the road and you are guaranteed to be killed. So I kept focus on the road ahead as it wasn’t without potholes and tricky sand/loose soil. The path I had in mind was the 25.5km from Perungalathur through Vandalur, Urapakkam, Guduvancherry  to Potheri and back. It was indeed a strange but refreshing feeling riding in the darkness sometimes. And darkness I tell you, there are many stretches which aren’t lit and tree cover makes it impossible for moonlight to shine on the path. This for me is scary. But I rode, All Izz Well… ;) As I past Guduvancherry, I started feeling the first signs of fatigue. Having not gone for a ride for quite a long time, it seems pretty obvious that it wasn’t easy for me. But then I held myself and focussed on to getting that one opening in the highway to switch lanes and go back. And 40 minutes after I began I was there, in front of the SRM University. I got down and my lower body was pretty numb. My palms were deep red and my neck started to ache a bit. But it was totally great feeling, one I missed for a long time. And now it was time back home.

 

The fatigue has really caught on me. As I slowly began from where I have left off, the whole body was aching and my mind was giving me suggestions to take more rest. After quite a struggle I managed to bring myself back on track and put my focus solely on getting me back home. And what a change that made! In less than 20 minutes I rode past the railway gates of the Perungulathur station, past the Policemen and to my home. It was a very satisfying journey, and I remarked that to a very frightened street dog in front of the gate. I stealthily got my cycle back upstairs and had a good nice bath. Heading back to the bedroom, my friends were sound asleep. I joined them in the middle with the feeling that I have taken the Schwinn out for one of the best rides yet, and that it came of one of the most frustrating days at the office made it even more special.

 

2:35. It’s time for rest I deserve. Adios!

Google, what are you gonna do now?

Yup, that’s my question to Larry Page and Sergey Brin. I really would like to have written this in an email to them, but well can’t find their address the easy way, so I thought I’d share it with you guys.

Google+. A name synonymous for getting excited at first and then dust it out. Yes neither have you used much of Google+. I was wondering when I got the invite why has Google not get rid of Buzz. Well it turns out Google haven’t planned much except releasing a product that “plusses on Facebook’s minusses”. Google+ has been a story of it competing with Facebook head on. It was an exciting thing at first, the fact that many people were dying to get the invites. But the moment I got it I knew Facebook has heaved a sigh of relief. Here was a chance Google had in upping the ante in the Social networking business, and they bombed it just like US in Iraq. Even a Google employee hit out against Google+. I’ll leave all the shortcomings and failed promises of Google+ to this article [0] [1] [2].

I rather would like to ask Google – What now? Yes, Google is known for a lot of experimentation. And with experimentation there will be lots of failures and some success. Luckily this some success turned out to be good enough to succumb to failures (read search, Gmail, Android, AdMobs etc). One thing that’s not in Google’s kitty is Social networking. It’s many attempts – Wave, Buzz, Google+, only seem to confuse users more than ever. Make no mistake, all these are good products, some even great (I do use buzz, which still seems a relevant feature). And Google+ did bring some nice features. Hangout is a great idea, I like the concept very much. Circles is a good stuff (animation is real slick) and adding friends is so damn easy. Real easy! And the interface is pretty slick, I like the top bar that comes in every Google site and the notifications the way they are organized and pop up. All these are great. But unfortunately (or fortunately? more coming up) it flopped and is on the downhill. Maybe it can beat wave faster to being exterminated! However I really hope this doesn’t happen and Google does have time to recover, hell lots of time to recover!

What Google should do now is learn from the mistakes and look ahead with clear head and focus. Focus is key and the focus would be to build a nice ecosystem. I say that with a lot of emphasis. It’s of utmost importance to Google now and it actually might be the best time to start thinking about. What I feel Google should do is instead of competing with the Social Networking giants like Facebook and Twitter, why not promote them? Why not help making them better. Why not join hands with them and build a richer ecosystem that would benefit them all? What I see here is that each (Google, Facebook, Twitter) have a different great working models and ideas in their kitty and that they will be a real force when gelled together. I love to see a future when android phones are deeply integrated with facebook and twitter and we would be using all these services in our daily routine! Yeah such a co-existence would take some time to nurture, but then Google has lots in their hands to do. First thing is don’t even think about shelling out Google+. Instead integrate it with every other Google product. Why not have hangouts integrated into Gmail? Why not see what other people have searched similar to your query? Why not make a messaging service (though it’s there, but not ubiquitous) that just works like in iOS?

People do use a lot of GMail, though majority would be nudging through their Facebook walls to see what their buddies are up to. All I’m suggesting here is stop thinking about what other people are doing and how to counteract them. Start building your own cool stuff, Google. GMail was and is one of the best emailing services that everyone has started using. AdMobile is doing a really great job that others just forget about competing against. Android is being phenomenal in the number of devices being activated and the pure brute power the latest versions of the OS will bring. And the new ideas are real cool, like android@home, ChromeOS for netbooks. And how can I forget – Search. Google search is something so awesome and “I can’t live without it” thing that people have forgotten to use the word “search” for “google it out”! I mean this is what makes Google so Google! And Google is still a really great and respected company. I just don’t want it to lose steam, which by the current crop of releases, is. :(

I do wonder why I write this post. Why waste time on this. But I really like Google and I really hate to see Google getting a bit ashamed of what they are doing. Well, it’s part and parcel of life (Hello, even Apple after 1999 had those, remember Ping?). And what worries me is the fact that Google really doesn’t have a platform, rather an ecosystem on which others can rely Google upon. Many companies have started to realize that, but Google still won’t look into this direction. I guess it’s Google realizes this and head out to a new direction of wonder and glory and all the crazy and cool stuff that Google is going to invent and make. Google, I am sure, is going to be one the companies that will lead us to the future. But Google, listen ok? :P

[0] http://mashable.com/2011/10/12/google-engineer-rant-google-plus/

[1] http://www.businessinsider.com/steve-yegge-google-platform-rant-2011-10

[2] http://siliconfilter.com/google-engineer-google-is-a-prime-example-of-our-complete-failure-to-understand-platforms/