Saturday, 29 July 2017

Spatial Memory Game

Swami Gulagulaananda said:
"Our short term memory is only as good as... uh oh, I think I lost my train of thought"

We have two types of memory - Long Term Memory, which like our hard disks allow us to remember things for a longer duration, like names, faces, places and other memories; and Short Term Memory, which is like cache, used to remember things for a brief moment, like the OTP that we get on our phones. We remember that OTP long enough to enter into our computers and then a minute later - *poof* it's gone!

This is a simple game that shows you a grid and highlights a bunch of squares randomly for a short period of time. You have to remember the highlighted squares and select them. See how far you can go! Click on Start Game below

You may also be interested in The Knight's Tour.

Friday, 28 July 2017

On Hindi-fication of India

Swami Gulagulaananda said:
I wonder how many things, among the ones that we say out loud vehemently, we truly believe in"

A couple of days ago, a pro-Kannada activist group smeared paint over all Hindi sign-boards of all Bangalore Metro stations. They also insisted that Hindi messages should be eliminated from the Metro Trains. As of now, the announcements in Bangalore Metro trains are in three languages - Kannada, English and Hindi.

Why do they have a problem with Hindi? The pro-Kannada supporters don’t hate Hindi - They oppose the choice of Hindi. They question “Why Hindi specifically? Why not Telugu or Tamil?” They feel that Hindi is being thrust on the locals. It would make sense, perhaps, if the Hindi population is large enough to warrant Hindi. However, it appears that the Telugu and Tamil populations outnumber the Hindi populace in Bangalore by a significant number.

Ah, but isn’t Hindi the national language of India? It turns out that India has no official national language and all languages are to be treated equally.

When I look at India as a country, I prefer comparing India to the European Union rather than China or the USA. While China is mostly homogeneous, a lot of people feel that the USA is rather heterogeneous, what with the melting pot and all that rot. The USA may have a large population of mixed races of people from various countries, but in the end, they speak a common tongue - English. Even outsiders, Indians included, speak in English in the US. Perhaps California is an outlier, considering the large population of Hispanics there. California has signboards in English and Spanish. But the rest of the US is rather homogeneous in this regard.

European Union on the other hand is comparable to India where each country of the EU is like a state of India. They've various languages like English, French, German, Italian and others just like India’s Hindi, Kannada, Tamil, Telugu, etc. Their cuisines vary across countries, just like Indian cuisines vary across states. In fact, North Karnataka cuisine is a lot different from South Karnataka...

Given these many differences, it is truly amazing that India is still one single country - It’s indeed a sub-continent. It’s fantastic that we all work well with one another despite our differences.

Ideally speaking, we should cherish these differences and continue living as one. However, differences prevent us from truly being one. In reality, people like to bond over things that they have in common. Differences make the world colourful, but people generally don’t like changes and differences. People like to bond with similar people. If you are a hardcore nerd who likes to read, you are less likely to hang out with jocks who like to play football. You would rather discuss the next best book to read with a fellow nerd. This is the way we are.

So despite all the ideal talk about unity in diversity, people bond with similar people better. That doesn’t mean that a Hindu and Muslim, a North Indian and a South Indian, etc. cannot be friends. The amalgamation of similar types is better.

When a North Indian and a South Indian have to converse, they end up picking a common language to communicate with each other; and more often than not, that common language ends up being English. Even a Tamilian and a Kannadiga talk in English. Let’s accept the fact that English is the universal global language, and also the language that has given India a signficant edge over China.

Personally, and sometimes I am embarrassed to admit, English happens to be my strongest language. I am pretty sure, though I have never tested myself, that my English vocabulary is several times better than Kannada (local language) or Konkani (my native tongue). I can confidently speak English without any foreign loan words, but end up mixing English words while speaking other languages. That doesn’t mean that I am bad at other languages - I just happen to be better in English.

It is very rare for a Hindi person to speak in Kannada (however broken) in Bangalore. They speak in Hindi or English. The locals, on the other hand, respond in broken Hindi most often. I love Bangalore for this - Try doing this in Tamil Nadu :P

But should we pick English as the common language? Wouldn’t it have been better if we had a common Indian language to talk in?

In my opinion, India needs a common Indian language - and I believe Hindi should be that language. Hindi has the highest number of speakers in India and is most widely spread. While Bengali comes second, Bengali is a very localised language, while Hindi covers a larger geography. Hindi also happens to be the language known by most of us - I am sure that a majority of Indians reading this post are also avid Bollywood fans who can speak passable Hindi. To summarise, more non-native speakers of Hindi know Hindi than non-native speakers of any other language knowing a third language.

I am not, of course, asking for Hindi as a replacement to local languages; neither do I subscribe to pushing it down our throats. But I strongly feel that we as Indians need more unifying - and if a common language can play a role in it, that language, in my opinion, is Hindi.

I am interested to know the opinions of others though - Do you feel that Hindi should be the unifying language? Or should it remain English?

Counter Argument
The following is a counter argument by my friend, Lokesh Acharya. He has quoted famous poet D.V.G.
This is the link to his original tweet.

Of Artificial Intelligence

Swami Gulagulaananda said:
Learning from experiences is supervised learning… Guessing by yourself and being right is pure bliss"

In an eCommerce company, a digital marketer typically creates ads on social media websites such as Facebook. These ads are paid, and the charges are based on the number of times ads are displayed to visitors (called impressions) or by the number of times that a user clicked on these ads (called clicks). Eventually, if I have to understand the performance of an ad, I will measure it against the total sales and revenue generated by that ad. While the social media website gives me metrics such as impressions and clicks, it cannot give me the sales and revenues realised because that is happening outside their realm (in my realm, my website). So, if I have to measure the true efficacy of a campaign, I have to collate data such as number of impressions and clicks from the social media website with data that I collect on my eCommerce website such as views of target page (product page), add to carts and checkouts. This allows me to measure conversion rates.

Now, the digital marketer’s job is to observe this data and take some decisions. If an ad is performing well - that is, if it is sending a large number of people to my website, then, I will push more money into that ad so that it reaches even more people. On the other hand, I’ll probably reduce money into an ad that’s tanking. A software developer who looks at this scenario can quickly observe that there is an opening for some automation here. Since a program can read all of this data, a program can also be coded to arrive at decisions. Simplistically, you can add certain thresholds to add money or remove ads. However, in today’s world which is replete with buzz words such as big data and machine learning, one can build a truly sophisticated system that considers a host of external data such as determine the quality of ad based on the graphic (by performing an image analysis), text (by performing text analysis) and external factors such as time, geography, interests, past performance etc.

Cutting down on the technobabble, it is perfectly possible to replace that digital marketer with a program. This seems fantastic, but is definitely doable. This program that you use will be significantly better than the person because it has a huge amount of data based on which decisions are arrived at. Let’s look at a few more examples where machine learning (ML) and artificial intelligence (AI) could be used. Self driving cars are already making news all over the world. Doctors could potentially be replaced because most doctors, at least in the Western world, rely heavily on tests and scans (watch House MD if you don’t believe me). We could have a machine which can scan our body, vital statistics such as temperature, BP etc., extract a few drops of blood and run a bunch of scans and then run the numbers against a huge database that it has built from data worldwide and arrive at the diagnosis. This diagnosis will be more reliable, perhaps, than doctors because of sheer volumes of data that is used.

Taking it a step further, ploughing a farm and planting seeds is not that complicated once you are able to build self driving cars.

You see, most of the jobs can be automated in the long run. The question that we need to be thinking about is - Should we let this happen?

On the one hand, it seems obvious that this should be the way forward. The technology will be top notch, cheaper, far less error prone, the experience will be significantly higher than any individual, etc. All of this makes it seem like this is the future. However, there are cons. Think about all the people who are going to be losing jobs. Let’s take one example of drivers. In India, professional drivers are the ones who drive buses, trucks, minivans to transport smaller quantities of goods, autorickshaws, taxis like Ola and Uber, school vans etc. If we automate these jobs, what are they going to do? Surely find other jobs, you say?

When I had been to the US, a toy drone that I wanted to purchase cost me one third on Amazon than in a brick & mortar store. When I asked the salesman why it was priced three times higher, he told me about electricity, salary and other overheads. It immediately made sense why people bought on Amazon and why their flywheel model works so well in the US. This salesman will be fired eventually because his company cannot compete with Amazon. What will he do?

It appears that most of the jobs that they can pick can eventually be automated… If automation and companies like Amazon & Flipkart rule the world, we get a lot of advantages. But there are also a large number of corresponding job cuts. If all the mom and pop stores, our friendly local department stores get closed, we will have a large number of jobless people.

A counter argument is - Well, when these companies grow, they will hire more people, won’t they? Automation is simply transferring jobs from one place to another. While this is true, the number of jobs created is different. 500 people may lose their jobs for 50 new jobs created for fulfilment.

What if all these jobless people start resorting to crime to fill their stomachs? We have already been reading news about disgruntled drivers kidnapping people to take revenge on ride aggregation companies and others following Silicon Valley employees and heckling at them… Will our society spiral towards its doom?

A good thing about eCommerce companies like Amazon and Flipkart, in India at least, is that they are playing nice with third party sellers who are benefiting a lot from an additional channel of sale. Similarly, Ola and Uber are giving a lot of structure and business to cab drivers. Our country and society can grow only when we all grow well together. Automation should not be shunned and technological progress should not be stopped - But before implementing them blindly, we need to consider a lot of things - such as their impact on society.

I thought about this recently because of a news item about the government’s decision of not having driverless cars in India. I remembered this video that I had watched long back titled “Humans need not apply”. I have attached it here for your viewing pleasure: