Availability in Distributed Systems

In a typical distributed software environment, besides latency, a key metric that correlates well with the health of the business is what is known as “availability”. 

Availability is usually measured by the percentage of time the software is not down (i.e.: available). Availability is vital to modern software organizations. ‘High availability’, or HA for short, is a term commonly used by software professionals. It refers to a software system that enjoys a very low down time.

black and silver round analog clock
Photo by cottonbro studio on Pexels.com

Let’s go back to our hypothetical social network from the previous article, in which you are a senior … Read more

Distributed Software Systems at scale

One of the most potent skills a senior engineer can possess in modern software engineering orgs is the ability to navigate distributed software systems at a global scale. Designing, constructing, and maintaining such systems can be an immensely challenging yet profoundly satisfying intellectual exercise. For some of the top players in the industry, like Google or Meta/Facebook, the responsibilities of lead engineers are akin to the responsibilities of commanders overseeing a global battle field. The business relies on you and your peers to operate massive global systems with a myriad of wild variables. 

Distributed software systems is a well documented … Read more

Thoughts on Process historians

Today, I found myself wanting to talk about a SCADA related topic a little bit. What is SCADA you say? Well, you can either check this article, or just read on. SCADA is a world that I live in, where software meets temperature sensors and pressure gauges. SCADA is the software layer that sits between a human being and a bunch of devices that control and monitor operations in a factory, oil pipelines in the desert , or power generation substations… you get the idea!! Process historians are not considered SCADA systems by themselves, however they are vital companions … Read more

Cross-platform mobile development

This post is about my thoughts on C#, Xamarin and cross-platform mobile programming in general. Originally, I wanted to talk exclusively about C# and it’s significance in modern mobile programming however I couldn’t resist covering the topic from the beginning. If you are only interested in C# and Xamarin , click here.

Cross-platform mobile development

So you love technology, you enjoy your iPhone/Android/Windows device, you know how to program and you have a ground-breaking-kick-ass-never-seen-before-will-turn-the-world-upside-down idea for a mobile app, what next? Answer is simple: go make it!! But make it how? Isn’t your idea worth sharing with the whole … Read more

A Class Factory in Golang (Google Go)

Do you know what a class factory is and why is it useful?  Ever considered implementing a class factory in Golang (Google Go) even though Go is not considered fully object oriented in nature? Are you curious about some awesome features in Go other than it’s impressive concurrency capabilities? If any of the these questions interests you, then reading on may be worth your while. This article covers implementing the factory design pattern in Go.

If that’s not your first time visiting my site, then you probably know by now that the Go programming language is a personal favorite … Read more

A dive into the industrial software industry

This article serves to provide a decent overview of the industrial software industry. This industry is the gate to the intelligent solutions that drive the success of industrial operations in factories, plants, pipelines, electrical grids, and similar facilities. Let’s start the journey by covering SCADA which is the main component of any industrial software.

What is scada?

A SCADA (Supervisory Control And Data Acquisition) system simply refers to the layers of software and infrastructure that sit between a digital screen, and any control or measuring device. SCADA is used to issue control commands to remote devices like valves or pumps, read values from those devices, and analyze device data when needed. SCADA … Read more

What is a Database?

Simple Definition:

A database is very simply a software program that stores any kind of information to be retrieved later.

 

Examples:

In schools, a database is the piece of software that stores the student names, grades, history..etc

In a retail shop, a database is where the customer names, what they paid.. etc is stored

 … Read more