Santhosh Ravirala

Hi, I'm Santhosh Ravirala, I write this blog, passionate software engineer with an affinity for Microsoft .Net technologies and loves fitness content

JWT
JWT

JWT stands for JSON web token is a very popular way to do user authorization in web apps today. In this blog lets talk about what JWT is and how it is used specifically in context of securing web applications. Though JWT is commonly used for authorization, the idea behind JWT is to create a... » read more

Monitors & Deadlocks
Monitors & Deadlocks

Monitors In my previous post we spoke about locks and resource synchronization. A Monitor also provides a similar set of actions to a lock, but the syntactic sugar slightly differs from locks. They allow a program to ensure only one thread at a time can access a particular object. Rather than controlling a statement or... » read more

Locks
Locks

Manage Multithreading In a multi-threading program, the order in which the actions were performed was different each time. This is because operating system decides when a thread runs, and the decisions are made based on the workload. When asynchronous solutions are designed with multi-threading one should consider the uncertainty about the timings of thread activity... » read more

Async/Await
Async/Await

Consider the following example where the method Compute Averages is going to calculate the average of random numbers generated over the given number. If the method is called with a very large number (100000000), the random number generator takes time to generate the numbers over a very large number of operations and on top of... » read more

NDepend
NDepend

Background A month ago, Patrick Smacchia a C# MVP and the author of Ndepend reached out to me to have a look at his product: NDepend and asked me to share my thoughts on it. I must say I felt very happy when Patrick contacted me to let me try this and also giving me the honor... » read more

Command Pattern
Command Pattern

Command Pattern The Command pattern encapsulates the request as an object thereby letting you parameterize other objects with different requests queue or log request and support undoable operations. The key thing to understand here is its not the sender who is sending the request nor the receiver who is consuming it is encapsulated, its the... » read more