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

Well Oiled Engineering Teams

In 1965, a brilliant psychological researcher, Bruce Tuckman, came up with what became known as Tuckman stages of group development. These stages describe the distinct phases that a group working together, or in other word a team, goes through as they get more effective over time. The phases (or stages) are Forming, Storming, Norming and Performing. Each stage exactly reflects what it’s name means. Tuckman stages of team development became a hit with leadership circles. Most managers who went through some form of  formal leadership training know about Tuckman stages in one way or another.

There are … Read more

Thoughts on managing engineering teams

Below are some thoughts that I put together in my journey to learn how to become a better manager of engineers. The learning journey continues.

photo of people doing handshakes
Photo by fauxels on Pexels.com

There are three main areas that need focus:

  • Vision, strategy & execution
  • People
  • Alignment

Vision, strategy & execution

You must have a vision of where you would like the team to go. A team needs to have long term goals that fit within the organization. Imagine the most perfect version of your team. What should it do? Should it evolve to several teams? Should it focus on fewer responsibilities? Should … Read more

Outside the box

For most of my career, I was advised to “think outside the box”. It’s a fun concept, a cute idea really! It’s a popular piece of advice, especially in the Silicon Valley culture, where I currently belong. The thing is though, I don’t really think the majority of us understand what the “box” is, let alone what thinking outside of it looks like! 

I don’t claim to fully understand it myself either. If I did, I would be now leading my white hot new startup, disrupting some industry, or even birthing a new one, while changing the world on the … Read more

The Golang News mobile app

tl;dr I wrote a Golang news aggregator mobile app, I open sourced it. If you use Android, you can get the app.

It is no secret that I am a huge fan of the Go language! Go has proved to be a very reliable partner in my projects, whether the project in question is personal or professional.

One of my favorite sources of up to date news about Go, is a website called golang news , which I have been following for years. The site is being maintained by Kenny Grant. His work on that project is … Read more

My first book journey

Coding is a passion for many software developers. A lot of us do it because we simply like it, not because it pays for fancy steak dinners, or make our loved ones proud. But why do we like it? From my own experience, the reason for that passion is different from one developer to another. It’s about what makes you ‘tick’. For some developers, they enjoy the logical constructs that work together to build a piece of software. For others, they are obsessed with the mental challenges that come with programming.

For me, I simply enjoy building things from scratch. … Read more

Practical thoughts on HMIs and industrial software environments

Welcome again to the world of industrial software. This article is a collection of thoughts to provide practical exposure into the concept of HMIs, and why they are important. We will also cover important concepts that apply to the data performance of industrial software in general. The article will first go through the basic concepts around HMIs, their use cases, and how they work. From there, we’ll dive deeper into real world design and implementation considerations, that come along with embedding HMIs in industrial environments.

The basics

HMIs or Human Machine Interfaces are popular pieces of software, utilized by all … Read more

Introducing Mastering Golang Programming

For the past year, I had worked really hard with Packt publishing on building an advanced video course about the Go language called “Mastering Go Programming“. Mastering Golang Programming is an extensive video course on the world of the Go language. The Go programming language is considered by many as a phenomenal disruptive technology despite it’s young age. A game changer when it comes to building powerful software products. Since it’s inception, Go had grown in popularity dramatically, becoming the TIOBE programming index 2016 language of the year winner.  

The course provides a unique combination of covering deep … Read more

Practical thoughts on industrial OPC

Industrial OPC is a vital, yet relatively small component in a SCADA system. This is because OPC is typically responsible for the software communication aspect between a piece of industrial software, and a monitoring or control device (sensors, PLCs..etc). It may not be as complex as analysis algorithms embedded in data historians , or as fancy as visuals reflected on HMI screens. However, Inspite of this, industrial OPC can never be ignored. OPC is the equivalent of those resilient nails that make a fancy piece of furniture come together.

What is OPC ?

OPC is popular because it is … Read more