Which one is better for machine learning, C++ or Golang?

None of them :)

Since this question has been posted on Quora, I am assuming that the OP is new to Machine Learning.

C++ is more of ‘bare-metal’ programming where you are dealing at quite a low level. The support for libraries is limited. Of course it is quite fast, but then this speed comes at the cost of reduced library support.

Golang is definitely a great language, but it has been designed primarily for the development of distributed systems. It has some excellent libraries for threading, locking/concurrency, etc. However, it has limited support for Machine Learning.

When it comes to a choice of a programming language to pick up ML, Pythonwins by a huge margin. Python has some of the best Machine Learning libraries:

  • Sklearn - also known as scikit-learn, this library contains some out-of-the-box implementation of common ML algorithms like Linear Regression, SVM, etc.
  • Tensorflow - this is a great library for someone who wants a finer control. It is getting increasingly popular, particularly in the deep learning space.
  • Keras - a great library for deep learning. Very intuitive and easy to use.
  • Others - theanocaffe, etc. I am not much aware of these, but they are for sure quite popular.

Besides, there are excellent tutorials and documentation available for anyone to pick up these libraries with minimal effort.

Yet another commonly used programming language for ML is Java.

It is to be noted that many of the powerful ML libraries are built in C++ (for instance, Tensorflow). However, that doesn’t make C++ the most ‘user-friendly’ language for Machine Learning.

Tech Entrepreneur
Jan. 7, 2018

What are the benefits of starting your business as a young person?

I started my startup about 10 months back at the age of 21. Here are the few benefits I observed:

  • No liability. You do not have to worry about anything if the business fails. Parents are there to back you up.
  • Mentorship. Almost every person you meet in the business world would be elder to you and so, you get free guidance from everyone.
  • Customers. While some customers frown at you when you say you run a startup, many others feel happy and proud that young people are creating jobs. Talking specifically about India, many people appreciate the fact that you are an IITian who didn’t leave India. This, at times, acts as a bonus point when the customer evaluates you, because it shows commitment.
  • People. At the very early stage in your career, you get to learn how to manage people.
  • Motivation. The fire to keep the customers happy forces you to work harder and grow the business. This is an invaluable life skill which you get to learn at an early stage in life.

Tech Entrepreneur
Jan. 6, 2018

How do chatbots work?

  • Hey, what’s up?
  • How’re you doing?
  • How do you do?
  • Hello!

Anything familiar in these sentences?

They all are some or the other variation of a greeting message.

How do you respond when someone asks you one of the above questions?

You respond, typically like - I am good, how about you?

Some other day you might respond as - I am fine, thanks for asking.

This is exactly how ChatBots work. A typical ChatBot maps a sentence into a so called intent which in this case is the greeting intent. With every intent are associated a set of responses. The bot picks up one of these responses and sends it back to the user. This is done so as to give a more natural feel to the bot by avoiding sending the exact same response again and again.

What is the AI here?

The element of Artificial Intelligence comes in during the intent recognition. The bot is supposed to take a look at the words and possibly their arrangement in order to figure out what the intent is. This can be done in multiple ways like:

  • Simple word mapping: words like hi, hello, what’s, etc can be mapped to the greeting intent. However, this is quite inaccurate because ‘hello, who the hell are you?’ doesn’t quite sound like a greeting :P
  • Machine Learning: if you are familiar with Machine Learning, you would be able to easily identify that the above problem is a supervised learning based classification problem. In simpler words, the problem at our hand is as follows - you are given a bunch of sentences and the corresponding intent against them. Now, you are given a new sentence and you need to classify it as belonging to one of the intents. This problem can be solved using a number of ways. The simplest way would be to use a Naive Bayes based implementation. In this implementation, we convert the sentence into a vector of numbers. The corresponding intents are also given ‘codes’ to identify them numerically. This input is fed to a training algorithm which learns how to classify these sentences. Later on, the trained model can be used to classify new sentences (if it has been trained well). Over time, it can be retrained with fresh data so as to make it learn better.

A more complex Machine Learning approach will involve training a multi-layer artificial neural network which is almost sure to give far better accuracy.

Once the intent has been identified, the bot can pick up one of the answers corresponding to the intent.

It is easy to code your own bot using Python. Some libraries worth trying are:

  • Sklearn - it provides Naive Bayes classifier out-of-the-box.
  • Tensorflow - you can write your own neural network

Hope that explains the working of a ChatBot :)

Tech Entrepreneur
Jan. 6, 2018

Will competitive programming do any good to my career?

Yes, it will.

If you are from India and have a great competitive programming profile, we would love to interview you for the position of a Backend Development Engineer at AllinCall.

We at AllinCall have special affinity for those who have great Competitive programming profile. Reasons are simple:

We’ve had good experience working with those who didn’t know anything about backend development but were great competitive programmers.

Competitive programming isn’t about competitive programming. It is about learning how to learn.

Competitive programmers are fast at thinking. They are able to think creative solutions to tricky problems really quickly. This skill brings a lot of value to the organization.

Competitive programmers tend to fight till the end. They don’t give up easily. This one skill is something I believe to be one of the most important life skill.

Over my 6 months of (extremely short) experience of working with software engineers, what I have observed is that an engineer who has the ability to learn things fast easily surpasses someone who has some experience in the domain.

For instance, one of our talented developers (who happens to be a fresh grad) knew nothing about Django/Python. He picked up almost all of it in just a matter of 3 weeks and today he is an active contributor to our growth. Needless to say that he did lots of competitive programming during his college days.

I personally believe that competitive programming is a great way to:

  • Build your technicals skills and learn the art of not giving up.

  • Showcase your technical skills and get an edge over other candidates including those who have more experience than you.

Once again, I would like to mention that if you are a great competitive programmer and can join immediately, you are more than welcome to apply at AllinCall!

Tech Entrepreneur
Jan. 5, 2018