Dec 20, 2016

I think Donald Trump won the American election because he won the hearts and minds of millions of Americans: the working class, the blue collar Americans. They were getting seriously worried about the future: China is having a lead in several sectors of the global economy, jobs were moving out of the country (because companies find cheap labor out of the USA) thereby increasing unemployment, taxes were crippling businesses and investors, and there were legitimate concerns about illegal immigrants in the country.

Donald Trump has expressed interest in the presidency for over 8 years now but he had not been serious about it until last year when he declared his interest in this year’s election. As always, the media didn’t take him serious. It was hilarious to think about Donald Trump as president.

Hillary Clinton was the obvious choice, she had over 25 years of serious political experience and she has been instrumental in forming several international policies of the US. However, the working class was getting worried.

Hillary Clinton was seen as corrupt by several people, and they wouldn’t vote for her. The book Clinton Cash told a story about how the Bill Clinton foundation had exploited their political influence in favor of people who donated to their foundation (there was even something about Nigeria in the book, it had something to do with the founder of This Day newspaper). Also, the problems with her private email server couldn’t be overlooked. It wasn’t really the fact that she used a private server, that was a ‘mistake’ and we all understand. She lied about it, she couldn’t explain herself and importantly, some of the leaked emails were contradictory to statements Hillary had made in the past.

The media tried to downplay her issues, they couldn’t discuss it in detail since they were biased, and they gave Americans the sense that there was something fishy about the whole story. When Americans felt they couldn’t trust Hillary nor the media, they had to trust their guts.

The media lived in a world of fantasy, and so did millions of people around the world. In some cities, 'Who are you voting for' became a ridiculous question, it was Donald Trump, and there was no need to ask.

I think Americans voted objectively, putting personal bias aside. Some of his voters dislike his attitude and personality, but they believed in his policies.

There were undercurrents of apprehension, Donald Trump promised hope, Hillary didn’t.

Aug 07, 2016

I am not a psychologist, this article reflects my own humble opinion.

I have tutored a lot of people in the past – school mates, fellow computer scientists and others. I’ve done so in classrooms, hackathons, and hostels. I love sharing knowledge, especially when I know how hard it was for me to acquire them.

However, what has been a constant source of annoyance to me is the widespread belief in ‘slow’  and ‘fast’  brains. I know everyone is created differently, and intellectual abilities differ, but Usain Bolt did not stop running because he was not born a cheetah. I would really enjoy a discussion on differences in intellectual abilities, but not when it is used as an excuse to stop moving forward.

We have all got a race to run, and some arrive on the field thoroughly equipped, some don’t. You don’t sit on your ass just because things aren’t as easy for you as they are for others; you push harder. I have made a promise to myself to stop any tutoring session the moment my tutee tries to justify how much of a slow learner he is than the rest of the world.

When you’re running the race, don’t dwell on just how ill-equipped you are and don’t compare yourself to others. Sweat as much as the well-toned girl in brand new boots running beside you. Run the race as if equipment don’t matter, because they truly don’t.

Remember: In life, you’re either crawling forward or sliding backward. There’s no ‘stable’. There’s no middle ground.

No middle ground.

Jun 20, 2016

You can’t have escaped the headlines, media reports, television coverage and all the talk on the rise in the applications of artificial intelligence, data science and machine learning. You might be surprised to know that machine learning has been around for decades. However, the field has only recently began to get increasing media attention as a result of the huge amounts of data available today, and increase in computational powers available.

Artificial intelligence (AI) is concerned with the development of computers and softwares that are capable of intelligent behavior. Machine learning is a subset of AI, and its major concern is the construction of algorithms that can learn from data. Machine learning is in two forms: Unsupervised learning and Supervised learning. Supervised learning is preferred when the training data is labelled and categories are known. However, unsupervised learning is used when there are no categories — just data — and it is necessary to figure out patterns. A lot of industries such as advertising, health, entertainment, retail, computing, manufacturing and real estate are being completely reshaped as machine learning is getting applied to them.

Advertising agencies have, for as long as products have been manufactured and services have been developed, been trying to get people to buy their clients’ products. With the advent of computers, the Internet and digital advertising, advertising has gotten more targeted and sophisticated. Decades ago, it was nearly impossible for advertising agencies to get data on people brought into contact with their campaigns. Nowadays, these agencies collect a whale lot of data about customers, which are then analyzed. Machine learning algorithms help to sniff out patterns in the data and this makes it easier to understand and predict customer behaviour. This ultimately helps to increase conversion rates of advertising campaigns.

In medicine and healthcare, a number of startups are looking at the advantages of using machine learning with big data to provide healthcare professionals with better-informed data in order to enable them make better decisions. An example is the IBM Watson computer which is now used by doctors to access millions of pages of medical research and thousands of pages of information on medical evidence.

Also, identifying patients at risk could get a lot of help from machine learning. A lot of life-threatening diseases, in their early stages, show symptoms that are very similar to non-life-threatening ones. Identifying truly risky situations then starts to get difficult, but less so when a lot of data on previously infected people are analyzed and patterns are detected. This makes it easy to know those who might be infected with the life-threatening ones and get them urgent medical attention. This would also make it easy to predict future occurrences of such diseases in other patients.

The automobile industry is also going to benefit a lot from machine learning. There has been a lot of talk about self-driving cars recently, and the major idea behind it is teaching cars how to drive themselves. These cars are fitted with computers, sensors, software and network connectivity with which they collect a lot of data about their environment and then send the data to the cloud for processing and storage. A machine learning algorithm called Neural Network which works by mirroring how the human brain works, is applied in a lot of these self-driving cars.

These cars are driven by human drivers at first and they are able to recognize patterns in the way the humans drive by monitoring his driving decisions. The fitted sensors collect lots of data about the type of lane, cars or objects around, and traffic signs. These data are passed to learning algorithms which analyze them and generate driving decisions. In the future, there would be central storage locations for the huge size of traffic data that is collected and this would make it easier for new cars to drive themselves without a human driving them first.

The race is on for machine learning to be used in Banking and Finance analytics. Detection of fraudulent transactions, loans analysis and stock trading are areas that could very well benefit from machine learning. Fraudulent financial transactions share a lot of patterns that makes them easy to detect. However, filtering through millions of transactions while searching for fraudulent ones is no simple task for a human. A computer that has been trained to recognize fraudulent transactions can very easily detect them, even at their earlier stages. These transactions can be flagged and humans review them afterwards. This can go a long way towards reducing fraudulent financial transactions. Also, stock trading uses a lot of machine learning. There are lots of platforms that aim to help users make better stock trades. These platforms do a lot of analysis and computations in order to make their recommendations. They analyze tons of data about the historical opening and closing prices of stocks and they are able to make really accurate stock predictions.

Machine learning and artificial intelligence can be put to use — and are being put to use — in a lot of industries. A lot of applications are currently being discovered as well, and the amount of data available today is just colossal. Although it’s easy enough to analyze data, protecting the privacy of user data is another story. Obviously, some users are more concerned about how their data is used, especially in the case of it being sold to third-party companies. The increased volume of data available is new, but the privacy debate will be the deciding factor about how the algorithms will ultimately be used.

Apr 20, 2016

Technology improved communication then destroyed it. In my father’s early days, you would get off a public bus with new friendships forged. People would care about strangers, helping was easy. People loved making new friends. Couples enjoyed each other's companies, no technology to help them. Technology has destroyed human interactions and social skills.

There used to be a time when helping was easy and honesty came easy. Nowadays, we hear things like ‘Mind your own business’, ‘Don’t give unsought opinions’, and other anti-social stuffs. Those are actually reasonable sayings, but when you see someone carrying three heavy suitcases and you're muttering to yourself under your breath: 'Mind your own business', then I think it's time to reevaluate the meanings of the sayings. It used to be perfectly normal to ask for help from strangers, but torture is now preferable to asking for help. In elevators, groups of people make no attempts at discussions and everyone stares at each other like dummies.

When someone sits in a reception room or a bus with other specimens of humanity, it used to be that reasonable political and economical discussions would be made. Now, people are hunched over their phones and laptops, struggling to communicate with someone who is hundreds/thousands of miles away from them. Funny enough, when they get together with those people, they become engrossed in communications with someone else who is hundreds of miles away. This craziness is evidenced by the televisions that are now being put up in reception rooms. People think it's necessary because they'll rather watch some dude talking on TV rather than talk with each other. Tech cool, huh?

I believe one of the reasons divorce rates are on the rise is because couples have nothing to discuss when they are in an empty room. One of the real tests of communication between two people is how they survive for an hour in an empty room, without laptops, phones and televisions. Couples have nothing to discuss anymore apart from office gossips and family affairs. You did not win each other's hearts by talking about your offices and mothers (hell, maybe you did). Couples now have televisions in their bedrooms and it appears as if they are actually running from themselves. Can't people look each other in the eyes and communicate anymore? Must it be through Instant Messaging? The true meaning of communication is getting lost and people are not getting scared at all.

One of the real tests of communication between two people is how they survive for an hour in an empty room, without laptops, phones and televisions.

Now, people are cowards. There used to be a time when people would speak out in group discussions about issues that concern them. There would be debates and stuff. Nowadays, people are angry and they go on twitter to rant anonymously and they feel good. I was debating on Whatsapp the other day and my Chief Opponents could not even look me in the eyes when we met in person, hell, I was burning to continue the discussion. Technology has made us cowards.

Ask a teenager what he discusses with his friends and he gets a defensive and blank look on his face. He does not even know, yet he spends hours on group chats with them. So he says, 'Dude, music and girls stuffs nah'. Every single teen I've asked.

This short article is the type that deserves a book written on it. Hell, maybe I'll even consider it.

Jan 14, 2016

Definition of Open Source

Generally,open source refers to a computer program in which the source code is available to the general public for use and/or modification from its original design.Open-source software is software whose source code is published and made available to the public, enabling anyone to copy, modify and redistribute the source code without paying royalties or fees. The open-source movement in software began as a response to the limitations of proprietary code, and has since spread across different fields.

Before the phrase open source became widely adopted, developers and producers used a variety of other terms. Open source gained hold with the rise of the Internet, and the attendant need for massive retooling of the computing source code. Opening the source code enabled a self-enhancing diversity of production models, communication paths, and interactive communities.

Open-source code is meant to be a collaborative effort, where programmers improve upon the source code and share the changes within the community. Typically this is not the case, and code is merely released to the public under some license. Others can then download, modify, and publish their version (fork) back to the community.

In production and development, open source as a development model promotes universal access via a free license to a product's design or blueprint, and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone.

Features of Open Source Model

  • Source Code
    This is one of the major principles/features of the Open Source Model. It means that the source code of a software has to be generally available or it’s not open source. In most cases, the source code is made available with a license which places a restriction on the redistribution and use of the source code. This is a major difference between Open-source software and Free software (Free software allows you to freely redistribute the source code, modify and sell it without any restrictions whatsoever).
  • Peer Production/Community/Mass Collaboration
    A main principle of open-source software development is peer production, with products such as source code, "blueprints", and documentation available to the public at no cost. Open-source code can evolve through community cooperation. These communities are composed of individual programmers as well as large companies. Some of the individual programmers who start an open-source project may end up establishing companies offering products or services incorporating open-source programs.

Advantages and Disadvantages of Open Source Model

  • Advantages
  1. Lower Cost
    Open source software are generally cheaper to produce when compared to their proprietary competitors because they are supported by communities that actively contribute to the software.
  2. No Vendor Lock-In
    Using open source software also means that you’re not locked to using a particular vendor’s system that only work with their other systems.
  3. Security
    Open source software are usually more secure because the source code is available for everyone who cares to go through it any security backdoors, vulnerabilities, viruses or worms that have been planted there by the developers will be easy to detect.
  4. Better Quality
    Because open source software has many users poring over the code, it generally has better quality and is less prone to bugs and errors when compared to its proprietary competitors.
  • Disadvantages
  1. Because there is no requirement to create a commercial product that will sell and generate money, open source software can tend to evolve more in line with developers’ wishes than the needs of the end user.
  2. For the same reason, they can be less “user-friendly” and not as easy to use because less attention is paid to developing the user interface.
  3. There may also be less support available for when things go wrong – open source software tends to rely on its community of users to respond to and fix problems.
  4. Although the open source software itself is mostly free, there may still be some indirect costs involved, such as paying for external support.
  5. Although having an open system means that there are many people identifying bugs and fixing them, it also means that malicious users can potentially view it and exploit any vulnerabilities.

Developmental Tools in Open Source

  • Revision Control Systems
    Revision control systems such as Concurrent Versions System (CVS) and later Subversion (SVN) and Git are examples of tools that help centrally manage the source code files and the changes to those files for a software project. Revision control systems are needed in order to identify changes to the source code and so as to track changes to the code base over time.
  • Internet Communication Systems
    Tools such as mailing lists, IRC (Internet Relay Chat), and instant messaging provide means of Internet communication between developers. The Web is also a core feature of all of the above systems.

Comparisons with Other Developmental Models

  • Proprietary Software
    Proprietary software is software that is owned by an individual or a company (usually the one that developed it). There are almost always major restrictions on its use, and its source code is almost always kept secret. However, open source software is a software with its source code made availablewith a licensein which the copyright holder provides the rights to study, change, and distribute the software to anyone and for any purpose.
  • Free Software
    The primary difference between the terms open-source and free software is where they place their emphasis. "Free software" is defined in terms of giving the user freedom. This reflects the goal of the free software movement. "Open source" highlights that the source code is viewable to all; proponents of the term usually emphasize the quality of the software and how this is caused by the development models which are possible and popular among free and open source software projects.
  • Source-Available Software
    As the name suggests, source-available or shared-source is a term used to refer to software where the source is available for viewing but which may not legally be modified or redistributed. Since one of the primary features of Open Source is freedom to modify and redistribute the software, there exists a big difference between open-source and source-available software. It is necessary to make this distinction because some people think that once the source code for a software is available, it’s open source.

Why We Need To Collaborate

In a world that demands cost-effective, secure and high quality solutions, we discover that software developed today have extremely high standards set for them. When we consider some of the biggest open source software in the world today, we discover that the open source model of software development is starting to emerge as the very best.

Linux, Android, Mozilla  Firefox, Drupal, WordPress, Joomla, MySQL, Apache and PHP are major success stories of what happens when developers collaborate to work on projects (all of the above mentioned software are open source software). In their respective markets, these open source software have the largest market shares.

We need to collaborate for the following reasons:

  • Scale
    Most projects which later become open source projects started as someone’s private/bedroom project. Drupal, PageCarton, PHP and many other started like that. However, those projects only started to experience phenomenal growth and popularity when they stopped being private and evolved into collaborative software. Collaboration is very necessary for growth and expansion of software.
  • Creative Abrasion
    Creative abrasion is used to describe the friction individuals/communities experience when they start to share ideas with other individuals/communities that share very different beliefs. Clashes occur when two or more groups of people have different ideologies and this generally improves the quality of the software produced.
  • Longer Life Time
    Projects built on collaborative efforts last even after the demise of the original founders/project leads. For example, Debian Linux still exists all right even after Ian Murdock’s death in December 2015 (the –ian in Debian is his first name). The Debian community has no chance of slowing down even after the original founder’s death. That is a strong example of what happens when people collaborate.