Saving the intellect

The debate over software patents that has existed in the industry for quite some time now has become more intense lately. Writing on this topic seems like beating the dead horse, but I have some thoughts on this topic that don’t seem to be reflected anywhere else.

As one of the respected figures of the industry I respect PG‘s thoughts on the topic. But I have some opinions of my own.

I have problems comprehending the idea of software patents (like many other people, I hope). Sometime back read a post on Hacker news, where someone had tried to prove how software was like mathematics and hence cannot be patented. Apart from the fact that I belong to the open source clan which is usually associated with the “against” side of the debate, there are some interesting aspects to this issue.

I like to think of “software patent” as a misnomer. Patents are for ideas and only ideas can be patented. No matter hardware or software. And this is one  interesting thing about patents,  they don’t actually need you to implement your idea.  Google filed for a patent for a floating data center on a ship. No one is sure if Google is really serious about building one.

Google is not the only one to do so. Many companies file patents for ideas that they never intend to implement. Patent trolls are a special category of these. In some instances of poor intellectual use in determining intellectual index or innovation index, the number of patents filed by an organisation/person is the sole yardstick. For example, in many countries the number of patents filed by a university determines the amount of research funding it can woo from government. There are some companies which usually try to keep a small pile of patents which are not related to anything they do, but instead related to something which one of their competitor does; who also happens to be in other businesses. This helps them in times when a lawyer from the competition walks in with a notice for patent violation. Then they have something in stock that they can possibly trade. It is likely that the competitor is violating one of their patents. And that’s the way patent violations are usually settled -by trading patent licenses.

Now for the reasons I don’t believe in this yardstick is the good number of good reasons that a company may not go for a patent on everything that is patentable; and also a good number of evil reasons that a company may want to go for a patent. As is common knowledge, a company never patents its life-support technology (commonly known as trade-secret) which could allow it to be in  business for centuries. A patent on the other hand, would allow it to have technology monopoly only for a limited time (usually little more than 10 years). Although patents allow you the monopoly to the claimed technology, they make your technology common knowledge. Now this leads to more interesting possible turn our of events. Patents have jurisdiction only within the country in which the claim is filed. Hence companies have to choose  carefully the countries where they want to protect their interests. Once they file a patent the technology becomes public knowledge. World-over. If someone in another country claims a patent for the same technology or simply starts using the invention, the original inventor then cannot go and claim patent in that country. Since it has become common knowledge and common knowledge cannot be patented. Technology in existence cannot be claimed for a patent even if no-one else owns a patent over it since patents are granted only for new inventions.

Patents are an expensive affair; apart from the filing cost, usually requiring to pay an annual amount to keep it valid. Even after a patent is granted, finding patent violation instances and proving them in court is the onus of the inventor which is another big pain in the butt. Imagine a complex software algorithm for improving performance of a component. Once you file a patent and the algorithm becomes publicly available, how easy do you think it is to find if anyone else using it in their software? The patent fee also forces companies to rethink if  they are really going to lose significant business if someone else also comes up with the same technology or files a patent over it.

This excerpt from extremetech shows how sometimes patents and patent lawsuits can be utter nuisance –

As an example, Apple has been granted a patent on “slide to unlock” in the United States, which is now being contested in court. The idea both seems fairly obvious and was used in a Windows CE phone prior to Apple’s filing, but nonetheless it is currently valid in the United States — it has already been thrown out in the Netherlands after Samsung brought out the older phone to demonstrate for the court. Imagine the work of having to challenge several patents in each country where a company sells products.

Heard an expert say,  “It’s hard to be in the computing business–hardware or software–and not infringe on a couple of dozen IBM patents, if not more”. As PG rightly said, you’re probably infringing some patent every time you tie your shoelace.

Some people consider the claim that software patents are killing innovation as bullshit. Here is just one of the colorful infographics illustrating the patent wars in the industry. Such images have become common these days and the web of arrows more intricate. There is atleast a possibility that a fraction of the  amount of money spent by these giants  in suing each other could have been spent on generating more innovative ideas and a slight betterment of humanity.

I used to believe that patents were supposed to be claimed for inventions  -You know, something  new and cool. I sympathize with the Patent office. They have to deal with thousand of patent claims on infinite range of subjects. I am sure the bunch sitting there doesn’t have expertise on every topic that a lousy university allows you to do Ph.D. on. But after seeing patents like this and this, you can’t help but wonder, what dumb-heads are allowed to give away these patents? These kinds of patents are not one off .  Want more examples? – See this and this. And here is exactly how patents also kill innovation- If you have a patent for a knife itself, then you are stopping those talented bunch of chefs from inventing wonderful new recipes.

I’m not for or against software patents or patents in general. But I would be very happy to see patents getting granted for more useful and innovative stuff than Madonna  featured T-shirts.

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.

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.’