When a civilization faces severe internal problems, the downfall becomes almost inevitable.

This was the case with the Sassanid Empire, which, during the seventh century, was tottering under military defeats, famine and other problems.

This primed the empire, known as Iranshahr, to be conquered by the Muslim Arabs.


Ancient Indians had devoted their time and effort in a number of areas.

In the scholarly field, the three main areas were those of dharma, brahma (spirituality) and rasa (aesthetics).

Dharma relates to the worldly system of morality and laws. Brahma relates to the spiritual path by pursuing which one attains liberation. Rasa is the unique system of aesthetics that has influenced the elaborate systems of art.


In programming, having tests for as many corner cases as possible and having healthy level of code coverage is invaluable.

This ensures that code changes do not break existing functionality.

This is known as regression testing.


Indian philosophy has had many schools. These are known as darshanas (viewpoints). There are various classifications of the schools. But they all appear somewhat arbitrary. The schools include:

  1. Samkhya (enumeration)
  2. Yoga
  3. Nyaya (logic)
  4. Vaishesika (atomism or pluralism)
  5. Purva Mimamsa (prior Vedic exegesis)
  6. Uttara Mimamsa (later Vedic exegesis), also known as Vedanta
  7. Bauddha (Buddhism)
  8. Jaina (Jainism)
  9. Charvaka (Materialism)

Historically, the Yoga and Samkhya schools influenced each other and can be seen to merge into one school. Similarly, the Nyaya and the Vaishesika schools influenced each other. The same goes for the Purva and Uttara Mimamsa schools.

Among these nine schools, Yoga and Vedanta accept the existence of an Ishvara (Deity). The others are ambivalent about the subject or explicitly deny such an existence.


Mapping one thing to another is a key aspect of thinking.

Finding analogies and parallels has been a hallmark of thinking since ancient times.

It also applies in the world of programming where concepts are fuzzy but become clear when attempts are made to map to familiar concepts.


Performing code reviews is one of the parts of a programmer’s job.

It can be seen as an exercise to improve one’s knowledge and skill set by looking at code written by others.

The more code one reads, the better ones own coding ability becomes.


Writing logs of data at run time is one of the most important parts of a software application.

In case of any failure or unintended behavior, looking at the logs is one of the surest ways to fix the problem.

Depending on the verbosity level, the log message needs to be as verbose as possible.

For a log message to be effective, it needs to be descriptive and clear about what is occurring in the program.


Stories and mythology have been part of human culture since times immemorial.

History, on the other hand, has been found to be a tough discipline to get right.

Trying to fit a complicated history into some narrative or a well known pattern is bound to lead to disastrous results.

This sort of approach can be compared to how Procrustes used to try to fit all his captives into an iron bed by stretching them or cutting their legs off.


In the deployment of softwares and programs, one of the great advances made to help with installation and management of dependencies is virtualization at the operating system level.

This allows easy deployment of softwares suitable for many platforms and applications.

One of the examples for this is Docker.

Such systems are s great way to help in speedy and optimal deployment.


In the life cycle of a software product, users eventually will have to go through the process of troubleshooting when they run across issues with the product.

Making it easy for the user to troubleshoot and providing good documentation is thus one of the key ways to ensure the success of a software product.