Image Source

This short article will focus on the main characteristics of Virtual Desktop Infrastructure (VDI) as opposed to the traditional Terminal Services.

Terminal Services are also known as Remote Desktop Services, whereby software and entire desktops are made available to remote client machines that support RDP (Remote Desktop Protocol). Thin clients are handled through shared sessions with the central server.

Characteristics of TS include:

  • Sharing one server amongst many users
  • All users have the same software with the same configurations
  • Maintenance (updates, patching, troubleshooting, etc.) is handled in a single point
  • Each user has a limited access to the shared pool…

Image Source

This article will explore what creational design patterns are, why we need them and what different variations exist.

Creational design patterns are the mechanisms for object creation in software engineering. They control the way objects are created and hence, increase the flexibility of the system.

The main aim of these patterns is to separate the creation of objects from their usage, thereby improving the quality and re-usability of your code.

To understand this better, consider the following code that does not follow the basic creational design patterns:

public class Bird {
Beak beak;

public void eat() {;


In this short article, we will explore what the C4 model is, what its different levels are and how one can apply it in practice.

C4 is an abstraction-based model for a diagrammatic depiction of the software architecture.

It consists of four main levels (diagrams):

  • Context,
  • Container,
  • Component,
  • Code.

So, according to this model, any software system is deemed to:

  • exist within a specific context,
  • consist of one or more containers (mobile apps, web apps, etc.),
  • with each container containing one or more components,
  • each component being implemented by some code elements (classes, functions, etc.)

Level 1 of the C4…

Image Source

The formal definition of solution architecture, as provided by Gartner (2013), is as follows:

A solution architecture (SA) is an architectural description of a specific solution. SAs [Solution Architects] combine guidance from different enterprise architecture viewpoints (business, information and technical), as well as from the enterprise solution architecture (ESA). (Source)

To put it into simple terms, solution architects transform business, information and technical requirements into a solution, and then describe that solution architecturally. In order to perform this job, solution architects need to be well-versed in both the context of the enterprise and the details of technical design & implementation.

Image Source

“It’s the edges of the maps that fascinate …” — David Mitchell

Imagine you are Mark Watney stuck on Mars for five years with barely any food left to sustain your existence. You decide to start growing crops indoors without soil and sunlight (somehow) to have something to eat. Wouldn’t it be great if you had some sensors installed that could help you analyze and track the usage of water, the condition of the soil and crops? You could then determine the optimal harvest time and chemically intervene in case of deteriorating conditions. …

Image Source

In this article, we will explore what Terraform is, what its workflow looks like and how it can be applied in practice.

Terraform is …

A tool to manage your infrastructure as code, including:

  • storage,
  • compute instances,
  • networking, etc.

The term infrastructure as code means that all the needed resources will be managed through files (i.e. code) instead of manual configurations through an interface. So, infrastructure “becomes” some code and can be versioned, which allows it to be easily re-used, changed and shared.

Specifically, Terraform will generate a plan on how to reach the desired state of the infrastructure for your project and…

Image Source

In this article, we will explore the key characteristics of different cloud service models and their limitations. Treat this article as a useful brief summary for those looking for a brief introduction to what types of cloud services exist and how they differ from one another.

Key characteristics of this cloud service model are:

  • Vendors deliver the application to their users, over the internet. The applications are typically run through the users’ web browsers.
  • Users do not need to install, manage or upgrade the software — the vendor does it for them.
  • Data is securely stored in the cloud.
  • Examples…

Image Source

Unions make us strong — except that not all unions do (at least, in the programming world).

In this article, we will explore union types in C language. We will start with a brief introduction to union types and we will move on to such important concepts, as discriminated and free unions (as well as the disadvantages of using them).

Unions are used to store different types of data in the same memory region. This saves storage space in a way similar to time-sharing the only hard copy of “Freakonomics” available in the library. Time-sharing in this case is possible…

“It was a brave old world.” — Mark A. Rayner

Image Source

DevOps is a philosophy, a culture, a new way of working, a digital transformation, a methodology, a strong collaborative end-to-end environment and so much more. DevOps is currently transforming the way digital (and not only) works, paving the way to even more innovation.

In the pre-DevOps era, there were usually two separate IT teams in any organization:

  • the development team which focused on the development of the software, and
  • the operations team which actually checked the performance of that software, maintained it and if (God forbid!) …

Image Source

The more I C, the less I see. — Unknown

Programming in C/C++ is generally deemed to be very flexible and powerful due to the existence of pointers (among other things we’re not going to cover here!).

Pointers are great — they provide you with access to memory, help to decrease the execution time of your program, are used to construct complex data structures (like trees, linked lists, etc.) and so on. Yet, not everything that shines is gold — pointers are in fact a dangerous “species” that can lead to such problems, as program crashes, data corruption, unnecessary code…

Narmin Jamalova

Computer Science & Data Analytics Master Student @ADA & @GWU

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store