Do you know these Software concepts?
Tags: webdev, programming, productivity, database
Published: 2021-08-27 17:28:18

We would be taking a look at some software concepts in this series. Some in the field of software design, network automation, database design, and engineering, and IT philosophy. 

The focus would be more on concepts that have evolved, unconventional concepts, and unpopular concepts maybe due to new trends and you may never have to know or worry about them any longer.

**A. Schrodinger's Tables**

![Schrodinger MySQL Cat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53uw5bfbtvz5z4x6yy7r.jpg)

Schrodinger’s experiment brought about a spark in quantum physics. Just like me, I guess Schrodinger was a helpless cat lover. The experiment involved a cat, flask of poison, and radioactive source placed in a box. If radioactivity is detected by an internal monitor, the flask is shattered which releases a poison that kills the cat. But after some time, when the box is looked at, the cat appears either alive or dead when in fact it is alive and dead simultaneously. Magical and supernatural I must say. But the Schrodinger’s rule not only occurs in cats but also in databases and database tables. There is a possibility where the database can both be alive and dead at the same time. So next time your database goes missing and presents at the same time, then it could be Shrondiger and his cats. The fix is to replace the ibdata1 and ib type files for MySQL but you can read more on the probable causes and fixes [here](http://www.conroyp.com/2014/02/23/schrodingers-mysql-table-does-it-exist/).

**B. The Promiscuous CPU**

![The promiscuous CPU](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a20ojkxzqfsly4w2vlu9.jpg)

It is in the field of network automation that asynchronicity matters most. Network devices need to get multiple packets at the same time. But sometimes, the CPU can get promiscuous requests which are the requests it doesn’t need.  Right when the CPU enters this stage, it enters the promiscuous mode. So before you start the casting of aspersion on the CPU, be aware that these promiscuous requests are involuntary. And the CPU didn’t mean to cheat.

**C. Unix theory**

![Unix theory](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/js77edrtaq1waem78cez.png)

We may have heard of the service-oriented architecture, DRY, and other theories that focus on reusability. The Unix theory is one of the philosophies that gave rise to such philosophical evolution. 

In summary, it says:

* Write programs that do one thing and do it well.
* Write programs to work together.
* Write programs to handle text streams, because that is a universal interface.

The UNIX theory has been a helping theory for the growth of the open-source community because not only were programs built to work together, but even people now worked better together.

**D. Principle of least astonishment:**

![Principle of least astonishment](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1dpp5n5uwhr6t3gezw2u.jpg)

It proposes that a component of a system should behave in a way that most users will expect it to behave i.e. "if a necessary feature has a high astonishment factor, it may be necessary to redesign the feature." The rule tries to improve the learnability and memorability experience of users by proposing that all extensions and enhancement should be of a gradual learning curve than a steep and 🏃‍♂️ learning curve. So, if you want your users to stay even during disruption, keep this rule at the back of your mind.

**E. Principle of least privilege:**

![principle of least privilege](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/guo5itv2j91gdb6wt520.jpg)

Better if the least access control is given than extra unnecessary access. This security rule is to achieve confidentiality, integrity, and availability. The least privilege rule addresses the second A(**authorization**) in the triple-A(**AAA**) information security rule.  So, besides verifying the identity of the user(**authentication**), it is important to know what the user can do(**authorization**), as well as knowing what individual actions the user has taken(**accounting**). So next time you want to connect an application with root access, think of less-privileged.