Troubleshooting ADT plugin installation for Eclipse

Recently, I had quite an adventure, costing me more than a day’s time, trying to install Android Development Tools (ADT) plugin for Eclipse on my new machine. A task so simple as this, if takes more than 15 minutes should be a real shame to the developer, the SDK and Google. Well, so I thought, until I figured out, none of these were the real culprit. I believed Eclipse’s update manager to be smart enough to pull dependencies without complaining  and maybe prompting for license agreement. So I was not-so-pleasantly surprised to see cryptic error messages interrupting the installation. After rummaging through pile of pages which Google thought would help me, the only thing that everyone seemed to be suggesting was that I needed to update my Eclipse installation with update manager. See here and here. I decided to kindly oblige but to no avail. I even upgraded my Eclipse classic installation to the latest  Eclipse 3.7 Indigo just to be sure. I also discovered that Eclipse would take forever if you try to check for updates with all the options from Preferences -> “Available Software Sites” checked and so I was just unable to upgrade my Eclipse installation.

Without giving up hope, I decided to dig into what Eclipse had to say about the installation error.  It said something to the effect that it needs Maven plugin with an id-  org.maven.ide.eclipse [1.0.100.20110804-1717]. I had no knowledge of any software with the name Maven until this point. While trying to install Maven plugin from m2e (Maven integration for eclipse) site, as per the instructions http://www.eclipse.org/m2e/download/, I ran into further troubles. I was getting the exact same error even while I was trying to install m2e. Alternatively, Maven plugin can also be downloaded by selecting it from the list of available updates for Eclipse. Someone suggested that I uninstall the old Maven plugin and then install the new one. Unfortunately that didn’t help either.

So after spending a whole day on a very simple task of getting started with Android Development, a blessed soul answered my prayers. The problem it seems was that you need to be running Eclipse as Administrator to be able to install plugin (at least for Indigo)!!! Duhhh!!!!

This is not ridiculous. IT’S HORRENDOUS.

For someone as faithful a companion as Eclipse has been for me over the years, I would expect it to not act like my girlfriend and tell me clearly what the problem is rather than beating around the bush.

Advertisements

Windows 7 woes

Since a couple of days I was experiencing problems with my T420 i5 laptop. I am running Windows 7 and I was experiencing frequent BSOD crashes. I tried to dig into the memory dump. In the process, I learnt that the minidump which is supposed to be generated upon a crash does not get generated by default and needs to be enabled manually. It looked like minidumps are of limited use anyway and memory dumps needs to be analyzed with a separate windows debugger tool WinDbg, which I have never used before.

As every smart geek is well aware of, digging into the problem is a stupid and probably the last thing to do. The first thing to do is to google for the problem. Strangely there was not much mention of the problem which had increased to such extent that I was having a crash every couple of minutes, rendering the machine completely useless. I heard from some friends that they are having similar problem. The only pointers I could get, suggested that the problem was with the video drivers. Trying to update the video drivers through Windows control panel doesn’t help since according to Windows, the drivers are up-to-date.

Finally fixed the problem by manually downloading video drivers from support.lenovo.com and installing.

Left, right and Center

Extremism, I believe,  is the most gruesome abuse of one’s righteous belief. People, more often than not, take a fanatical stand only to drive their point home. Being born in this great country called India, I have come to understand what makes the people of this country tick. In a nation with the length, breadth, population, and diversity in every respect, as large as India it is ridiculous to make any sweeping statement which would be fitting for the whole of country. And yet, there are so many traits, link, dots that the country has left on the pages of history over thousands of years, which when connected together form very distinct, comprehensible patterns.

Buddhism and Jainism have their origin in India, Buddhism being one of the widely followed religions in the world and more popular in the far-east. What makes Buddhism different from the more popular beliefs like Hinduism and Islam is that, it was born as a result of an attempt to bring together the best teachings of the contemporary religions in accordance with Buddha’s own understanding of the world and attaining Nirvana.  Buddhism represents a confluence of a large number of fragmented spiritual understandings and for me, on a spiritual plateau, it stands in the center.

From time immemorial, India has represented this ideology and have taken this stand of choosing the middle path when faced with options of tilting either to left or the right. This is true even in literal/physical sense of the term. Since its partition and emergence of new nations of East Pakistan and West Pakistan (now Bangladesh), India stands in the middle of two pieces of lands which were once a part of it. This ofcourse was not by choice but by a cruel happening. India has allowed to flourish every race, caste, creed and religion in the world on its land and pretty much all of them can be found here. Inspite of continuing communal tensions and riots there has not been a demand for partition based on religion ever since the creation of Pakistan. The Constitution of India respects the religious sentiments of every individual and grants him the right to practice the religion of his choice.

This is also true in the political sense of the term. India was one of the  four countries of the world who led the non-aligned movement when the world was simmering in the aftermath of the cold-war,  which threatened to turn it into a bi-polar world. Ofcourse, there are many different aspects to this story. Pandit Nehru, even to this day being the subject of criticism for his strong bias towards a socialist regime and  his affectionate relationship with Russia. Many believe, it is the legacy left behind by Nehru that haunts India even today and which is responsible for keeping India in shackles for so long. So strong was this bias and the country’s political class in denial that it refused to unlock the doors of its economy for years even after the fall of the Berlin Wall and the Soviet Union in ’89. When it did happen in ’92, it was too little, too late. Nevertheless, the country as a whole, has tried to abstain from taking sides on political tables. It has been a democratic attempt, although a struggling one, to give every political sentiment in the country, their rightful place.

Mahabharata, the oldest epic in the world and one of the holiest Hindu scriptures, is the greatest witness to the philosophy which India, or more aptly, ‘Bharat’, stands for. It tells of an incident when Yudhishthira was faced with the difficult choice of having to announce a false news of the death of Ashwatthama, son of Guru Dronacharya or lose the battle at the hands of DronacharyaYudhishthira, being the epitome of truth and honesty, and hence known as Dharmaraja, refuses to speak a lie. Instead, under the guidance of Lord Krishna, he chooses a middle path. He only announces the death of Ashwatthama after someone had killed an elephant by the same name.

It also tells of an incident, when Arjuna is faced with the difficult choice of having to fight a battle with his own brothers, teachers and his respected elders. In another instance where Arjuna hesitates to pull his arrow upon the mighty and invincible Karna, who even without his armor that made him immortal, is so powerful that even the great warrior Arjuna  having Lord Krishna himself by his side and blessed with the power of  Lord Hanumana on the flag of his chariot proves weaker in the battle. Lord Krishna convinced Arjuna that it was not Adharma to attack and kill Karna while he was unarmed and trying to remove his chariot wheels out of the mud and that it was his only chance to defeat the great warrior.

It was on the advice of Lord Krishna that Bhima was able to bring down Duryodhana in the final battle which lasted many days but only by violating the rules of the fight and hitting Duryodhana on his thighs, the only place of his body which did not have divine protection given by his mother Gaandhari. 

What Lord Krishna has tried to preach all through Mahabharata, and through his greatest teachings – Geeta, is the path of righteousness but with pragmatism and the ultimate understanding of what constitutes righteousness.

Legend has it that the last Hindu Emperor of India, Prithviraj Chauhan, defeated Muhammad Ghauri many times but released him out of mercy when Ghauri pleaded before him. But Ghauri kept attacking Delhi and finally defeated Prithviraj. Prithviraj, although a great Emperor, was killed by his kindness towards the hostile Muslim attackers. He set an example of Indian diplomatic mindset and how India deals with foreign powers almost 1000 years ago.

India has a no-first-use nuclear policy. India is the only nation which is not party to the Nuclear Non-Proliferation Treaty and yet has been allowed to import Nuclear technology and Uranium from countries like Australia, France and USA. This has been the proof of faith that the world puts in India which has been acquired over the years through exemplary diplomacy in a tough neighborhood.

I guess these are the characteristics that define Indianism. It has been our way of life for thousands of years. There has been very few instances of radical changes in mindset with respect to social and cultural practices in our society. People are resistant to overnight changes in the things they are used to and take for granted, although it is true for any society. To make complete sense of it, changes in Indian society will have to be noticed not in isolation but holistically with its history.

Platforms vs. Applications

Joel Spolsky in one of the interviews stated that he didn’t believe it was good business model to have your business built on a highly closed , proprietary 3rd party platform such as iOS.

Few days back, Steve Yegge’s long rant on Google+ went viral and was widely discussed and reported. Apparently, Yegge had shared the post publicly by mistake. He intended to share it only with few of his Google friends and later on removed from public share. Here is a link to the post (Someone had reshared Yegge’s post and later Google allowed him to keep the post) Hope this link still works.

Although, the post is a great read and talks about a lot of things, including his experience at Amazon, things that Google does well and those it needs to. The jist of the rant was Yegge was pissed with Google’s inability in establishing platforms right.

Here are some excerpts from the post –

On Amazon –

Amazon’s recruiting process is fundamentally flawed by having teams hire for themselves, so their hiring bar is incredibly inconsistent across teams, despite various efforts they’ve made to level it out. And their operations are a mess; they don’t really have SREs and they make engineers pretty much do everything, which leaves almost no time for coding – though again this varies by group, so it’s luck of the draw. They don’t give a single shit about charity or helping the needy or community contributions or anything like that. Never comes up there, except maybe to laugh about it. Their facilities are dirt-smeared cube farms without a dime spent on decor or common meeting areas. Their pay and benefits suck, although much less so lately due to local competition from Google and Facebook. But they don’t have any of our perks or extras — they just try to match the offer-letter numbers, and that’s the end of it. Their code base is a disaster, with no engineering standards whatsoever except what individual teams choose to put in place. To be fair, they do have a nice versioned-library system that we really ought to emulate, and a nice publish-subscribe system that we also have no equivalent for. But for the most part they just have a bunch of crappy tools that read and write state machine information into relational databases. We wouldn’t take most of it even if it were free. I think the pubsub system and their library-shelf system were two out of the grand total of three things Amazon does better than google.

On Jeff Bezos –

Jeff Bezos is an infamous micro-manager. He micro-manages every single pixel of Amazon’s retail site. He hired Larry Tesler, Apple’s Chief Scientist and probably the very most famous and respected human-computer interaction expert in the entire world, and then ignored every goddamn thing Larry said for three years until Larry finally — wisely — left the company. Larry would do these big usability studies and demonstrate beyond any shred of doubt that nobody can understand that frigging website, but Bezos just couldn’t let go of those pixels, all those millions of semantics-packed pixels on the landing page. They were like millions of his own precious children. So they’re all still there, and Larry is not.

On Google –

That one last thing that Google doesn’t do well is Platforms. We don’t understand platforms. We don’t “get” platforms. Some of you do, but you are the minority. This has become painfully clear to me over the past six years. I was kind of hoping that competitive pressure from Microsoft and Amazon and more recently Facebook would make us wake up collectively and start doing universal services. Not in some sort of ad-hoc, half-assed way, but in more or less the same way Amazon did it: all at once, for real, no cheating, and treating it as our top priority from now on. A product is useless without a platform, or more precisely and accurately, a platform-less product will always be replaced by an equivalent platform-ized product.

I recommend you to read the whole post. It gives a good food for thought. What Yegge was trying to tell was that Google has product biased mindset and developing platforms is the key to survive in the game. From my perspective as a developer, agreeing with Joel, I have always believed it to be a bad idea to have your business dependent on someone else’s platform. In certain respects, it is never avoidable. In traditional sense of software development, the software is always built upon a certain operating system.  Even cross platform softwares have to wrestle a balance of being cross platform and providing all the power that a certain platform has to offer.

On the other hand, in the space of web companies, as Dr. Werner Vogles explains all the pieces of building great stuff are at your disposal, which frees you from struggling with the basic infrastructure required to develop great Web Apps and lets you focus on value add. This is quite instrumental in driving innovative ideas. Eg. Twilio, plivo offer ready to consume telephony services. SimpleGeo offers Geographic API for application developers, host of different startups are offering streaming video services, even while established services like PayPal continue to exist, new startups are offering easy payment services. Cloud services such as AWS have super reduced the pain of managing the infrastructure, scalability and reachability while keeping it absolutely affordable.

Now all a developer needs is the next great idea and put all these pieces together.  A number of most successful startups lately have based themselves on one or the other platform. Zynga, now planning to go public, owes its success to Facebook. Angry birds also bet on the success of Android. The list of successful startups who placed themselves on iPhone is virtually endless. Instagram is one such startup. Quora, although not as successful as its creators would have expected it to be, now has a large user-base. As it turns out, Quora is built on Amazon Web Services. What Apple did with AppStore was the ultimate pioneering work for developing such a business model. I guess Facebook followed suit.

Couple of days back, I read a list of startups  on TechCrunch, that Goldman Sachs thinks will most likey IPO. The list is quite interesting and some time back, I was not enthusiastic about most of them. Some of those names I mentioned earlier feature in the list.

A not very unrelated issue, in my opinion, was Apple’s take on Flash for iOS devices. In his now famous blog post, Steve says some very interesting things. Sixth and the most important reason for rejecting Flash –

We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform

So the key takeaway for me is- use the existing infrastructure wisely, if already available. No one is going to pay you for reinventing the wheel. Aim to build an open platform rather than a closed product (and that is easy to say, I know)

Amazon Cloud Conclave

Got an opportunity to attend Cloud Conclave last month.  Amazon CTO Werner Vogels appeared specially for the event. The event was organised by Yourstory.in which is a bangalore based startup closely involved with technology startups in India.  Here is  a good summary of what Dr. Vogels had to say – link

Needless to say, some of the most awesome startups powered by AWS were showcased at the event.

Here is a list of top 5 startups – Link

Here is a list of top 10 student ideas – Link

I have been using AWS for some time now (they are micro instances, so not heavy on my pocket) and I must say I love using AWS.  As AWS gets popular, I have so far not seen any real competitor for it, except for Google AppEngine. Some of the most well-known startup comapnies are powered by AWS. Google AppEngine puts a serious limit on the amount on things a developer is allowed to do on the server, besides the limited no. of programming languages, its currently Java, Python and Go I guess. I have only tried using Python API. Developing a Python app on App Engine is essentially writing a CGI script. Although, all major Python web frameworks such as Django and web.py are supported. So for example, I cannot run any PHP framework such as WordPress. App Engine also does not allow to your app to write anything to the server’s filesystem directly. One has to use the datastore API only.

What AWS provides is complete power in the hands of the developer. I have my own ubuntu box (i.e. a box with my choice of OS) with root access!!! Here I can have LAMP stack of my own choice and practically do anything with the box. This is so handy and useful when you want to try out an app using something like node.js or nginx. It allows you to have a server of you own choice.

Although AWS is awesome, it would be good to see more of some such cloud service providers with the same scalability and reliability.

Simply Fly

There are a very few people I highly respect and admire. The latest addition to that list is Capt. Gopinath. I have been reading his autobiography- Simply Fly. Not just a serial entrepreneur, best known as founder of Air Deccan, but truly an amazing man. Born in a very humble family, Capt. Gopinath served in the army for several years before he left the army and returned to his village to become a farmer!! His sheer dedication to the occupation is simply admirable. He pour all his energy in farming for almost 10 years, and with great success, before he started to try other ventures like share market brokering, hotel business, motorbike dealership, farming and irrigation consultancy.

I have read stories of many such brave-hearts, beautiful, fortunate people who have seen life in all its forms and have lived life king-size. Each time, I have been amazed and enthused, inspired and enchanted, yet I fully realize that for each such story which celebrates the struggle of one man and shows his success in all its glory, there are countless stories of people who didn’t make it; whose stories didn’t have a happy ending; whose stories will never be read. After all we live in real world and life is not always as romantic as in books.  Coming back to the book, needless to say, it is a must read.

Here is a beautiful excerpt from the book and I’m noting it down mostly as a reference for myself –

A lot of people come to me and say, ‘I have set up a business. My boss does not know. My company does not know. When the business succeeds, I will resign.’ My reply is, ‘That business will never succeed. Your business will succeed only when you can’t pay your rent, you can’t pay salaries, you can’t buy your wife a sari, and you can’t pay your children’s school fees. Then you will learn to innovate. You will be forced to improve. Nothing breeds invention like necessity. Necessity will ensure you do not become complacent. You will be unable to sleep because your business may go bankrupt. This is how your business will succeed. Any other way of setting up a venture is a recipe for disaster.’