Skip to main content

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.

Nov 10, 2015

Drupal is an awesome piece of software. Some might say that Drupal is difficult to learn, unnecessarily complicated, blah blah blah. Well, we Drupal developers also have lots of tools that helps make things easier for us. I'll be discussing 3 of them in this article.

  1. Acquia Dev Desktop
  2. Drush
  3. Drupal Module for PhpStorm

1) Acquia Dev Desktop

This is DAMP (Drupal + Apache + MySql + PHP). It comes with 5 PHP versions including 7.00 RC. Acquia Dev Desktop also comes with Drush 8.0.0 RC2. It makes it very much easier to set up a Drupal website, and also makes it easier to play with such advanced features of Drupal like the Multisites feature. It simplifies website deployment on the Acquia Cloud platform, and you can interacting with your remote Acquia Cloud website through a SSH utility that comes packaged with it.

2) Drush

This is the coolest tool for Drupal which I've seen so far. Drush is short for DRUpal SHell; needless to say it's a command line utility that performs many useful Drupal tasks. Downloading and enabling Drupal modules, rebuilding registries, flushing caches, creating SQL dumps, running cron, viewing the status of your site are just some of the really awesome stuffs you can do with Drush.

Before Drush, downloading a module (say Views) used to be like this:

  • Visit
  • Search for views
  • Download the tarball or zip file from the project page
  • Visit the /admin/modules page of your drupal site
  • Import the module
  • Enable the module

With Drush, it’s like this:

  • Navigate to your root directory on the command line
  • Enter ‘drush en ’, in our case ‘drush en views’
  • After that, you’ll only have to enter ‘y’ twice.


3) Drupal Module for PhpStorm

You’re probably familiar with PhpStorm, which is arguably the most popular IDE among Drupal developers. PhpStorm comes with a Drupal module which provides Drupal-specific features for Drupal 6, 7 and 8. PhpStorm also comes with Command Line Tool Support which means you can integrate Drush within PhpStorm and get to use Drush without leaving PhpStorm. Then, you’ll truly feel like you’re in a storm.

Jul 12, 2015

The past week was a very stressful, entertaining and educative for me. I started the week with a practically unusable laptop and mobile phone. One way or the other, they had both fallen down and gotten their screens ruined. I had to set aside some cash to repair my laptop during the week, and my phone is still crazy.

During the week, I had ideas for several ecommerce websites. I decided to experiment with 5 of the biggest ecommerce platforms in the world.

  1. Wordpress with Woocommerce
  2. Magento (Community Edition)
  3. Prestashop
  4. Drupal with Drupal Commerce
  5. OpenCart

Now, there's something about me you need to know. I hate ready-made solutions. Whatever I'm working with, I need absolute control and flexibility. I need to be able to dig into hundreds of lines of codes and fit it to my standards. That's why you didn't see names like Shopify in the above list. Now, let's treat each of the 5 platforms above.

  1. Wordpress with Woocommerce: I started working with WordPress 4 months ago (check out my WordPress blog at However, it's a CMS specially crafted for beginners. I'd love WordPress for simple blogging. After checking out WordPress with WooCommerce, I made up my mind against it for the simple reason that lot's of advanced features that come with eCommerce-specific platforms like OpenCart are additional paid plugins you would have to install with WordPress. Also, WordPress is a CMS, and in additional with WooCommerce, should be used for eCommerce stores with little or no advanced requirements. I have nothing against it except for the fact that it lacks advanced features.
  2. Magento (Community Edition): Yeah, Magento. The most popular and most advanced ecommerce platform in the world with big names such as Samsung and Ford as users (Enterprise editions of course). Magento has 3 editions: Community, Go and Enterprise editions. Community is free, while Enterprise goes for #15,000 per year - I meant $15,000 of course ;). After playing with magento and checking out what people have to say about it, I arrived at a decision. The issue of Magento requiring large computing resources to perform well is a commonly-shared opinion among Magento users, and I don't really have financial resources for dedicated servers/SSD hosting/Cloud hosting. Also, Magento plugins, templates and technical assistance do not come cheaply. Therefore, you get a free platform, but end up spending a hell lot on servers, plugins, templates and technical assistance. Scrapped out!
  3. OpenCart: OpenCart was the most user-friendly among all ecommerce platforms I played with. It's free, and you get a beautiful default template. My major problem with OpenCart was the not-so-SEO-friendly urls you are left with. However, I would still recommend OpenCart for anyone willing to start an eCommerce website. It's pretty cool.
  4. Prestashop: Prestashop is similar to OpenCart. It even has search-friendly URLs. However, it shares a fault with Magento: most PrestaShop plugins and templates are just too expensive. However, I'll also recommend it to anyone willing to kickstart an ecommerce website.
  5. Drupal with Drupal Commerce: After playing out with lots of ecommerce platforms, Drupal with Drupal Commerce emerged as my favorite. I'll start a new project with Drupal Commerce tomorrow and hopefully, I'll finish in a month. Here are the reasons why Drupal with Drupal Commerce emerged as my favorite:
  • I love Drupal. It's the most advanced and poweful CMS platform out there.
  • I have a very high degree of control I don't normally have with OpenCart of PrestaShop.
  • Drupal with Drupal Ecommerce helps me learn new stuffs. OpenCart and PrestaShop are really cool out-of-the-box. However, while working on projects, I love to learn as I work, and out-of-the-box solutions just don't help you learn as much as you would if you're building from scratch (e.g. I built this blog with a very lightweight CMS called CouchCMS, and it took me a week to set up, whereas I could have done the same with WordPress in 10 minutes or less). I don't enjoy spending much time on projects, but I do so for learning's sake.

I could give more reasons, but the third reason sums it up. OpenCart and PrestaShop are really awesome for beginners, but I'll offer myself a challenge by trying out Drupal with Drupal Commerce and see what I can do with it. Stay trippy!