There are a wide range of static analysers available today — both commercial as well as open source. Have you ever wondered how static analysers magically detect difficult-to-find bugs in code? And why…

Calling virtual functions from constructors is problematic, and this problem can manifest itself in many ways. In this column, we’ll take a look at this problem, with specific examples. Last year, I bought…

We typically debug code to find and fix bugs. However, debugging itself can cause bugs. This is an interesting phenomenon that we cover in this month’s column. Consider the following simple Java example,…

The concept of “exception safety” is important for programming in the presence of exceptions. In this article, we’ll look at different levels of exception safety, with the help of an example. Let’s first…

Every programmer knows that debugging is akin to a detective’s work. In this column, we’ll cover this “bug hunt” process with an example of how the Intel Pentium processor bug was discovered. Software…

The stories of software development projects in crisis are amazingly familiar to all experienced programmers and managers. In this column, we’ll look at some common aspects of projects in crisis and how they…

There are subtle differences between languages like C, C++, Java and C#. Programmers transitioning from one language to another should beware of such differences. When I speak to my Tamil friends in English,…