GTRekter

Personal blog

View project on GitHub

Hello World

Ever since I was a little kid, technology and videogames have been a fundamental part of my life. I still remember sitting in front of an Amiga playing Cave Story. It was during middle school that I grew hungry to learn more. Even now that I’m working as a Senior Software Developer, I can’t stop taking professional courses on topics from Artificial Intelligence to CyberSecurity. IT is a never-ending update; there is always something new to learn, like learning to set up a Raspberry Pi after seeing Mr. Robot and hacking my wife’s computer. 😁 (Don’t worry, I bought her a subscription to Norton after that.)

I have extensive experience in web application development and software development life cycles. Using this experience, along with my knowledge of user experience design, I create solutions that not only work well but work right, by writing code that respects the SOLID principles.

During my free time, I enjoy sharing my knowledge and experiences with the development community by writing articles on LinkedIn and Medium as well as helping other developers by replying to their questions on StackOverflow.

While I love coding in general, I am a Microsoft stack man, and I want to stay loyal to my tribe.

Recent Posts

Azure Pipelines YAML Templates

This article will talk about YAML templates. By using these templates, you can make your code reusable and simplify sharing code across multiple pipelines…

Automate your Power BI reports deployment using Azure DevOps

This article will guide you through the implementation of CI/CD pipelines using Azure DevOps. This will enable you to deploy your local report to your Power BI service automatically. To show you how it works, I will use an extension called Power BI Actions, available for free on the Visual Studio marketplace…

Azure DevOps service tag

Microsoft recently announced support for the Azure DevOps service tag. In this article, I will explain how the Azure DevOps service tags work and why they are helpful…

Automating your Microsoft Teams creation process using PowerShell

Creating teams, channels and assigning users to them might become very time-consuming, especially if your company has dozens of channels and hundreds or even thousands of users with different roles.For this reason, I created a script that automates the entire process for you…

Kubernetes endpoints

In my previous article, I defined services as objects with a static IP that forwards the requests to pods whose selector contains a label…

How to deploy a .NET 5 API in a Kubernetes cluster

In today’s article, I am going to talk about the Microsoft cloud Kubernetes service. If you are not familiar with Kubernetes, I highly recommend reading my previous article since I will refer to con…

How to deploy a .NET 5 API in a Kubernetes cluster

In this demo, I will explain how creating and deploying a .NET 5 API in a Kubernetes cluster works, as well as look at its exposure via service object…

Pods, Deployments, and Services in Kubernetes

This article will explain Kubernetes more in-depth by introducing pods, services, and deployments…

Getting started with Kubernetes

Nowadays, when a client asks to create a highly available distributed system, Kubernetes has become the go-to choice. This resulted in a 69 percent use growth, according to the StackRox 2020 report. This article will give you a quick overview of Kubernetes. It’ll explain which problems it solves, how it works, and what its main components are. The concept behind Kubernetes is strictly related to Microservices, so I will summarize that as well to give you a bit of context…

Parallel jobs in Azure DevOps

In this article, I will talk about parallel jobs in Azure Pipelines, and I’ll provide you with several hints to determine how many you need…

Manage your Azure deployment slots with Azure CLI and Kudu

In this article, I’m going to show you how to create and manage Azure deployment slots using Azure CLI…

Set up a Raspberry Pi as Self-Hosted Agent in Azure DevOps

This article will show you how to configure your Azure DevOps to run your build pipeline via a Raspberry Pi with Linux. By default, Azure DevOps doesn’t have an option to build a Raspberry solution, so you will have to make one from scratch…

Reduce your build time using caching in Azure Pipelines

Every time you run a pipeline using Microsoft-hosted agents, Microsoft allocates a new virtual machine to it. One or more agents (a computing infrastructure with installed agent software) begin executing their jobs one at a time. After the pipeline is completed, the virtual machine is discarded, and its content removed. This means that in situations where your code needs some dependencies, the pipeline will have to download them repeatedly for each run…

Agile development practices

The use of agile methodologies has revolutionized the information technology industry. But what is Agile, and what are the differences compared to traditional software development models? In this article, I will answer these questions by comparing the Waterfall approach to Agile…

Build, Run, and Continuously deploy a Docker image on Azure Container Registry

This article will show you how to develop a microservice in NodeJS and create an Azure DevOps pipeline to continuously build/push its docker image to Azure Container Registry…

GitHub Advanced Security from Azure DevOps

GitHub Advanced Security has recently started supporting the ability to analyze your code for security vulnerabilities and coding errors from third-party CI pipelines. This article will teach you how to configure the code scanning feature in your GitHub repository and scan your code for any vulnerabilities from Azure DevOps pipelines…

Azure storage account

One of the benefits of cloud computing is creating off-premise storage accessible to an entire organization anywhere and at any time. This article will talk about Azure storage accounts and will explain what they are, how to create them (using Azure CLI), and more…

Azure DevOps work items explained

For beginners in the Agile world, Azure DevOps Work items might sound a little confusing. This article will explain what they are and their differences…

Remove Quick access from File Explorer in Windows 10

Quick access is a default location in File Explorer, which helps users by listing links of the most frequently accessed files and folders. In this guide, I will go through the steps necessary to remove it from the navigation pane…

Single responsibility principle

This principle was described in the work of Tom DeMarco and Meilir Page-Jones. They called it cohesion, which they defined as the functional relatedness of the elements of a module…

403.16 — Client certificate is untrusted of invalid

Two days ago, I configured a web application on IIS 8.5, which requires a client SSL certificate for authentication. Client certificate and server certificate were from the same CA, they trust each other without any problem, and none of them were even near to expiry date. Still, the application was giving this error code 403 — Forbidden…

SharePoint Site Templates

If you want to create a new SharePoint site using the Client Object Model, you can use the class WebCreationInformation to specify the site’s properties and then create it by adding the site to the Webs…

Open-Closed principle

This principle advises us to refactor the system so that further changes are achieved by adding new code and, because it doesn’t change the old code, will not cause more modifications. Modules that conform to OCP have two primary attributes…

Branch protection in Azure DevOps

Branch policies are an essential part of the Git workflow and allow you to define rules to protect critical branches of development. In this article, I will tell you how to implement branch protection in Azure DevOps…

Remote debugging Azure App Service

Azure App Services Remote Debugging allows developers to connect Visual Studio to their Azure App Service and gain full control. They can set breakpoints, manipulate memory directly, step through code, and even change the code path…

Liskov Substitution principle

Barbara Liskov introduced this principle in 1987. It extends the Open-Closed Principle by focusing on a superclass’s behavior and its subtypes. Its importance becomes evident when we consider the consequences of violating it. Consider an application that uses the following class…

Azure pipelines deployment approvals

In today’s article, I’m going to talk about release flow control. It is common to ask for approval in a release pipeline, especially when deploying to critical environments like Q&A and production…

How to solve SharePoint Designer cached credentials issue

When you open SharePoint Designer and sign in to a site for the first time, SharePoint Designer caches the credentials so that you’re not prompted to enter them again. Suppose you need to open the same site in SharePoint Designer using different credentials…

Hide/Show the folders from This PC in Windows 10

Microsoft introduced the display of 6 folders namely Documents, Pictures, Videos, Downloads, Music, and Desktop in This PC in both Windows 8.1 and Windows 10…

Cloud computing service models

There are three categories of cloud service models: Software as a service (SaaS), Platform as a service (PaaS), and Infrastructure as a service (IaaS)…

Boxing and unboxing in C#

In this article, I’m going to explain the essential concepts of boxing and unboxing…

.NET Core deployment types

In this article, I will discuss the different deployment types available in .NET Core…

Demystifying ASP.NET Core

ASP.NET Core is becoming increasingly indispensable in the web development landscape. This article aims to simplify the concepts behind ASP.NET Core and how it works…

Connect Your Teams Bot to Microsoft Graph

This article is a step-by-step instruction on how to configure a bot to work with Microsoft Teams and authenticate it to make Microsoft Graph requests…

How to create and configure your bot to work in Microsoft Teams

This article is a step-by-step guide on how to create a Bot from scratch using Microsoft Bot Framework and how to configure it to work with Microsoft Teams…

How to debug a SharePoint timer job with Visual Studio

Timer jobs are an effective solution to handle a situation where a specific process needs to run periodically. The following steps describe how to debug a Microsoft SharePoint 2010 timer job using Visual Studio…

Brute force attack with Hydra and Kali Linux

Hydra is a fast and flexible login cracker which can be used on both Linux and Windows, and supports protocols like AFP, HTTP-FORM-GET, HTTP-GET, HTTP-FORM-POST, HTTP-HEAD, HTTP-PROXY, and many more…

What is GAC?

The Global Assembly Cache (GAC) is a local cache maintained by the .NET Framework where strong-named assemblies (their name is composed by: name of assembly, version number, culture and public key token) that are designated to be shared by all the applications executed on a system will be stored…

Move your SharePoint On-Premise to Teams

With the Covid-19 pandemic, remote working has become a must more than a luxury. Many companies decided to adopt Microsoft Teams as a collaboration software between its employees, and others even moved part of their infrastructure to it. This article will explain how Microsoft Teams works and the relationship between it and SharePoint Online…

What is the difference between String and StringBuilder?

Difference between the String and StringBuilder is an important concept that makes the difference when an application has to deal with the editing of a high number of Strings…

Partial classes and methods

In this article, I’m going to explain what partial classes and partial methods are, and how to implement them in C#…

What is DevOps and how to implement it in your organization using Microsoft

DevOps is a hot topic today. However, there is a lot of confusion about it is. According to research conducted by Gartner, a global research and advisory firm in the United States, while 90% of the interviewed organizations describe themselves as being busy with DevOps, 44% openly admit that they are still trying to find out what it means. In this document, I will introduce the readers to the fundamental concepts of the DevOps and t…

What is CTS?

.NET is language-agnostic, which allows programmers to write code in different languages (which can be compiled to IL), and that code can interact with other code written in different languages. This feature is provided by the CTS (Common Type System), a standard that specifies how type definitions are represe…

What is a garbage collector?

The garbage collector (GC) is a part of the .NET framework which is initialized by the common language run-time (CLR) to manage the allocation and release of memory in an application…

Continuous testing and integration with GitHub repo and CircleCI

In this article, I’ll show you how to use two patterns that have penetrated all aspects of software development: continuous testing and integration. For this tutorial, I’m gonna use a repo on GitHub and CircliCI, so first, we need to sign up to CircleCI and link our GitHub profile…

State Management in ASP.NET

Whenever you visit a web application, your browser will communicate with the respective server through HTTP or HTTPs protocol, but because its stateless nature, if you visit the same web application again after closing the web browser, there will be no trace of your previous visit…

What is a virtual member?

We can’t talk about virtual members without referring to polymorphism. In fact, a function, property, indexer or event in a base class marked as virtual will allow override from a derive…

Data types and memory management in C#

Before explaining the different data types available in C#, it’s important to mention that C# is a strongly-typed language. This means that each variable, constant, input parameter, return type and in general every expression that evaluates to a value, has a…

Sealed modifiers

In this article, I will discuss what is a sealed modifier, how to use it and what’s its impact on your application’s performance…

How to create a web application using NPM and Docker in 5 minutes or less

In this article, I will show first how to build a Docker image and then download it from Docker Hub and use it to instantiate a new web application…

Social