Cluster Analysis Using K-means Explained

Clustering or cluster analysis is the process of dividing data into groups (clusters) in such a way that objects in the same cluster are more similar to each other than those in other clusters. It is used in data mining, machine learning, pattern recognition, data compression and in many other fields. In machine learning, it is often a starting point. In a machine learning application I built couple of years ago, we used clustering to divide six million prepaid subscribers into five clusters and then built a model for each cluster using linear regression. The goal of the application was to predict future recharges by subscribers so operators can make intelligent decisions like whether to grant or deny emergency credit. Another (trivial) application of clustering is for dividing customers into groups based on spending habits or brand loyalty for further analysis or to determine the best promotional strategy.


Certificate Authorities - Do You Know Who You Trust?

HTTPS (aka HTTP over the secure TLS protocol) provide a secure communication channel between web browsers and servers to guard against man-in-the-middle attacks. Although researchers have identified and reported a few vulnerabilities, TLS is still the best option out there and all websites should be using it.


Testers Make Software Teams Highly Productive

To put it mildly, developers are not great at testing their own products. Bias, pride, wrong assumptions, lack of time, switching contexts, all play a role in making developers ineffective at testing their code. Most companies, especially startups, don’t fully understand the role of a tester. Very early on in my career, we made the mistake of hiring people to be testers who applied for a software developer position but weren’t good enough programmers. We paid for it in terms of software quality and over-worked team. It wasn’t until I worked with some great testers that I realized how effective and productive software teams become when they have great testers on board.


Yak Shaving - the Less You Do the Better

The term yak shaving was coined at MIT back in the 90’s.

Yak shaving is what you are doing when you’re doing some stupid, fiddly little task that bears no obvious relationship to what you’re supposed to be working on, but yet a chain of twelve causal relations links what you’re doing to the original meta-task.

I asked a QA tester to test a simple HTTP/REST application. A task I thought shouldn’t take more than a few days. A few days later:

Me: “How is the testing going?”

QA: “Going alright.”

Me: “Any luck catching them bugs yet?”

QA: “Haven’t started writing tests yet.”

Me: “Huh?

QA: “I was setting up the testing environment in all its glory. Once it is done, I will update the test client to dynamically fetch the server-side configuration to the tests are run with the right expectations… Didn’t you see my Scrum board this morning? All of the yaks I need to shave are listed under the parent story.”


Committing Teamicide by Micromanagement

Micromanagement is amanagement style whereby a manager closely observes or controls the work of subordinates or employees”.


Micromanagement is bad. It hurts morale and works against making individuals or teams productive. An effective manager or a leader makes people use their brains instead of acting like mindless zombies who require constant babysitting and instructions. A micromanager is like a helicopter parent closely watching and monitoring the employees, which is very demoralizing especially to smart people.