Welcome to SilentException's blog

OAuth 2.0 in simple words

OAuth 2.0 is nothing more than a protocol for authorization that enables you to delegate your access. Simply put, it allows an application to access other applications on behalf of a user without giving full access. There're different flows in OAuth 2.0, and I covered the two most popular, Client Credentials Grant Flow and Authorization Code Grant Flow.

Azure login in Github Actions via Service Principal

In this blog, I show you how we can login to Azure from GitHub actions and make a service principal using Azure CLI, then add its credentials to GitHub actions. Besides, look over a workflow file in a repository, plus scopes and roles of service principals.

Raw string literal feature in C# 11

Working with string data types has been improving gradually in different versions of C#. At first glance, they may seem like small changes though they help us in the way that how to deal with strings subtly and usefully. Verbatim string(`@`) and string interpolation (`$`) are a few of those facilities that C# offers during these years. Along those lines, in this short blog, we're going to look over the raw string literal in C# 11.

Why should you use Span<T> in .NET?

Going over Span<T>, teaches us how we can have a higher performance without memory allocation code and how it is a better alternative to the Substring API. Span<T> reduces the load on GC by minimizing managed memory allocations. Span<T> has some restriction of usages, to overcome them Memory<T> has briefly introduced.

Inversion of Control (IoC) in simple words

Inversion of control at first glance may seem an obscure term though when you define it in simple sentences, you would realize how much it is understandable and can bring advantages to your application. In this post, I tried explaining it as simple as and as understandable as possible for junior developers.

Dependency injection in simple words

In this article I tried to make DI as simple and as understandable as possible not only for juniors but also for those who feel uncomfortable with dependency injection.

Why should we care about the capacity of List<T>?

Have you ever thought about generic lists under the hood? Do you know what's happening when a generic list is created? How about the internal array of generic lists? Or how do you use them efficiently? In this article, you can find answers and even more.

Synchronization by lock and Monitor statements (part 2)

In this part, we go over the Monitor class and its best practices, also a consumer-producer problem is implemented by the Monitor capabilities.

Synchronization by lock and Monitor statements (part 1)

Working through enterprise applications has various challenges, among them, multi-threading stands out. Nowadays, all applications tend to use all capabilities of modern hardware, especially CPUs in our case. Performing several jobs simultaneously...