Git Internals - in a nutshell

Git Internals - in a nutshell

People use a tool or technology on a daily basis, sometimes for years, without truly understanding it in-depth or knowing how it really works. In this blog post, we will take a closer look at the wonderful world of Git.

Let's start by establishing what git is
Well, if we ask Dr. Google we will probably get the following answer: "Git is a distributed version control and version management system". Now, let's break down what we just read and see if we can find a more reader-friendly explanation.

So, here is the deal. Git is the most widely used version control system in the world and quite surprisingly it is actually a well maintained and super popular open source.

Why do we need git?
Well, first of all, Git is able to track changes in files by using snapshots of the filesystem. Try to imagine that instead of source code you and your team are working on the same Google doc. What would happen? you would basically override each other's cha…

Containers - Let's get moving!

I recently posted an article about Docker and how it changed the way we perceive virtualization and deployment tasks. If you haven't read that one, I strongly recommend that you start by reading it before continuing to this one. Who are you, Docker?

In this short post, we are going to talk a little bit more about Containers. No, not the ones we use to ship out cars, clothes, electric Items and other goods. The ones we use to make it easier for us to manage virtualization and deployment tasks.

What is a Container?
Well, if we go to Google, we will find this definition:

"A container is a standard unit of software that packages up the code and all its dependencies so the application runs quickly and reliably from one computing environment to another."

Now let's try to better understand how it works. Take a look at the drawing below.

Let' say we have a machine with a Linux OS.
As we see in the above drawing there are several processes running on that machine.
In this …

Automated Mindset

A part of my fascinating role in is arriving at our customer's headquarters and helping them achieve their automation goals. This type of Solution Architecture is truly challenging and interesting because there is no "One size fit all approach" and each company has its own unique challenges, agenda, mindset, and skillset.

There are many difficulties in implementing test automation, one of which is changing your mindset from manual testing to automation-oriented perception.
One of the first things I tell everyone I meet is "before a single line of code is written, stop! take a piece of paper and a pen and list down your goals. Plan as detailed as you can what it should be like".
I noticed by talking to testers, that it is very difficult for some of them to detach themselves from what they are used to perform manually and try to think about automated tests from a different point of view.
One of the biggest common mistakes is attempting to automate every…

Kubernetes (K8S) introduction

So, by now chances are you have heard about Kubernetes at least ones. In this article, we will try to demystify Kubernetes and transform this buzzword into something we can comprehend.
To those of you that didn't get a chance to read one of my previous articles introducing the key concepts of Docker, (Who are you, Docker?) I strongly suggest you start by reading that article before you move forward to this one.

So what is Kubernetes?
Kubernetes, (commonly stylized as K8s) is an open source originally designed by Google. It is a container orchestration system for automating application deployment, scaling, and management.

Cluster who? -  Terminology that will help us move forward.
For one let's understand what is a cluster.
If you ever played around with Docker containers you must know how easy it is to spin up several Containers or multi-container applications. Maybe you even got a chance to experiment with docker-compose.  For something very small this kind of deployment could…

Chromedriver - Under The Hood

Selenium Webdriver has been our companion in our test automation adventures for some time now. Over the years the Selenium open source project has obtained something I can fairly describe as global domination. With Selenium, we are able to interact with different browsers using the WebDrivers. But, how much do we really know about them and the way they work?
In this article, we will take a closer look into "Chromedriver" and explore a little bit about how it works.

So, what is the role of this Webdriver?

Starting from the release of Selenium 2, we were introduced to the concept of Webdriver.
The "Chromedriver" for example is a .exe file that is able to act as a server. His role is to allow us to "Interact" with the browsers.
Eventually, the responsibility for developing and maintaining these drivers was transferred to the browser vendors. The idea is, that they know their browsers the best and the produces driver would be much more stable and robust. In re…

API - Let's make it simple

So, explain to me, what is an API? 

(It's a question I like to ask in an interview once I hear that the candidate has worked with one in his previous role).
Quite surprisingly, not many people can clearly explain this concept in simple words, and I'm not surprised.
If we search for the definition of API online, this is what we will find:
"In computer programming, an application programming interface (API) is a set of subroutine definitions, communication protocols, and tools for building software. In general terms, it is a set of clearly defined methods of communication among various components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer."

Now, let's try to break down and better understand this concept.
We live in a world that thrives of connectivity. At the edge of our fingertips, (and on the other side of our screen) there is a whole world that allows us to shop, pos…

Who are you, Docker?

"Docker" is a big buzzword these days. Everybody wants to use it, everybody wants to learn about it. but who is this mysterious whale?

Let's start by defining what is Docker.  Docker is a tool that is designed to make it easier for us to perform virtualization tasks and to create deploy and run applications in a different way than we used to. With Docker, we can perform these tasks using Containers. (We will understand what that is in a bit).

Virtualization in a nut-shell. Virtualization is a process of creating something Virtual rather than actual. This process allows us to create instances of operating systems, applications and environments without having them physically present on our work station or a dedicated remote machine.
There are several very popular and well-known solutions for virtualization purposes such as KVM, VMbox, Vagrant, Ovirt, etc...

So what is the hype around Docker and how is it different from a standard VM? Well, Docker uses a different approach to…