Using Azure Cosmos persistence with NServiceBus
This post explains how you can use NServiceBus and Azure Cosmos DB persistence together for scalability and reliability.
This post explains how you can use NServiceBus and Azure Cosmos DB persistence together for scalability and reliability.

This post talks about a bug in Rider and Roslyn analyzers when we refactor the switch-case to switch expression with Nullable default type.

This post explains the pain-points of updating schema in NoSQL and how you can update Cosmos DB schema using custom JSON serializer.

This post explains how you can use custom JSON serializer settings with Cosmos DB using Newtonsoft JSON and System.Text.Json.

In this post, I have explained an opinionated way to achieve consistent error handling for your ASP.NET Core through Error response object.

In this post, I have explained how you can load a certificate through code in Azure App Service for Linu

This post talks about why you may need a distributed lock and how you can create a distributed lock using PostgreSQL.

This post explains how can create a simple scheduler using .NET BackgroundService without using external libraries or serverless functions.

This post is the first of my new series on JSON:API for .NET developers. JSON:API has been around for a while but has not been widely known in the .NET world.

This post describes importance of passing a single correlation id across requests in microservices and how we an achieve this in .NET.
This post provides tips that can help you write great tests and get the best results from your test suite.
The post describes JetBrains Rider as an alternate to Visual Studio and how Rider can help mitigate some of the Visual Studio pain-points.
This post gives you another reason why to stay away from C# dynamic. It turns the call-site into a late-bound leading to runtime issues.
The traditional Enum types do not support inheritance. The Enumeration class helps us to get away from the limitation.
This post describes how we can render an Enumeration class as an Enum type in client code with NSwag by implementing Swagger ISchemaFilter.
In this post, I have explained how you can use an Enumeration class as a query string parameter by creating a custom Model Binder.
We typically use Enumeration classes with Domain-Driven Design (DDD). In this series, I will describe how you can use an Enumeration Class beyond DDD.
In this post, I will explain how we can serialize an Enumeration class using a custom JSON Converter for both System.Text.Json and Newtonsoft.Json.
This is the first post in the series: Enumeration classes – DDD and beyond. This post gives an introduction to an Enumeration class.
The post describes the issues with Collection integrity in DDD and how we can use ImmutableList to avoid manipulating collections outside the Domain.
This post talks about my journey to publish ASP.NET Core Middleware as a Nuget Package from GitHub repository through GitHub Actions.
This post describes some of the pain-points of xUnit Theory and how we can write more descriptive tests by overriding the test output.
This posts talks about some of the standards and practices we use for our internal NuGet packages in our organization.
The post explains captive dependency. It highlights the potential issues when you do not configure lifetime services correctly.
Creating a client library for your Rest service can help your clients consume your Rest API. But is it a silver bullet to every problem?
C# 8 introduced a great feature of async stream using IAsyncEnumerable. This post talks about potential pitfalls when not using it right.
Adding Default Headers to Swagger / Open API definition in ASP.NET Core 3.1 application.
Different approaches we considered to set up integration tests when running against multiple DB providers in ASP.NET Core
In my previous post, I had talked about how we to ported an existing repository code from Azure SQL to Amazon Aurora. This is a two-series post where I will throw a little bit more light on the intention behind it and what we were trying to achieve. Background We had a small ASP.NET Core solution
I recently got an opportunity to work on migrating Azure SQL Database to Amazon Aurora. Well, it was not technically a migration since our platform needed to support both Azure SQL and Amazon Aurora. The motivation behind this is perhaps a separate post in itself. For those who have not worked on either of these
We are currently working on a greenfield project which involves building several microservices on Azure. One of our primary services had Azure SQL as its data source originally. But, midway during the development, we decided to switch Cosmos DB instead. One of the main motivations for this switch was that it was too hard to
I recently migrated the Dotnet Foundation website, https://dotnetfoundation.org/ to ASP.NET Core 3.0. The site was initially built on ASP.NET Core 2.1 and I found this as a good learning opportunity. Migrating from ASP.NET Core 2.1 to 2.2 I had initially raised PR to migrate from ASP.NET Core 2.1 to 2.2 instead of directly going to
NServiceBus is one of the most widely used service bus in .NET World. It offers features like high performance, scalability, automatic retries, auditing and so-on. NService has an out-of-box support for MSMQ, RabbitMQ, Sql Server, Azure Service Bus, etc. Our organization uses NServiceBus for messaging and workflow. We use Azure Service Bus in test/production and
Visual Studio is my bread and butter. It has played an important role in shaping my career. In the same breath, ReSharper has helped a lot to improve my productivity and make me a better programmer. And I’m sure there are many others like me who use Visual Studio and ReSharper on a daily basis.
Recently, after one of my PRs which was merged to master, my teammates started complaining about a weird scenario. On some occasions, the ASP.NET Core app hosted inside the IIS worker process (w3wp.exe), would simply die without any exception/ warning. There were no clear retro-steps and it was difficult to pinpoint what was causing the
Disclaimer: This post is not an endorsement or opposition of any product or tool. Opinions present here is based on our experiences. Please exercise your own independent skill and judgement before you rely on the information in this post. 🙂 This is Part-3 and final part of my blog series on Static Analysis Software Testing
Disclaimer: This post is not an endorsement or opposition of any product or tool. Opinions present here is based on our experiences. Please exercise your own independent skill and judgement before you rely on the information in this post. 🙂 This is Part-2 of my blog series on Static Analysis Software Testing (SAST) tooling. In
This post is Part-1 of multi-part series describing our journey to ditch popular Static Application Security Testing (SAST) tool Veracode and our quest for a better security tool. Background Until recently, our organization used Veracode for security analysis for few our applications. Veracode came with a lot of reputation. It is considered a leader in
Without a doubt Open Source is great. It has touched the lives of millions of developers and through them almost everyone living on this planet someway or the other. The magic of Open Source For all the power Open Source has given to developers, the sad reality is that only very few people are actually
Recently, I had written a post on how I managed bring down build pipeline for entire organization. While I was at fault during that time, Team City should take the blame for this one. Background I had recently created a CI/CD pipeline for our new .NET Core project. As part of the build pipeline, I
One of the crucial pieces of the new solution that I’m working on is RabbitMQ. For those who have never heard of RabbitMQ, it is one of the most widely used open source message broker. Since our solution is hosted on-premise, RabbitMQ was one of the most natural fit for us. Our entire solution architecture
December last year, last week before most of IT staff go on well-deserved vacation, when every team was trying to do one last deployment before code freeze, I brought down build-pipeline for almost every project in the company. Sounds scary? Here’s what happened. How it all started We are mostly a .NET shop and use
Stack Overflow does not need an introduction. It is one platform that has helped millions of developers across the world to be a better programmer. It is Google of software development. Maybe even more, because, Google still has competitors, Stack Overflow has none. Recently, I managed to cross 1000 reputation points on Stack Overflow. You
Sometime back, I had written about how to override appSettings during development in traditional ASP.NET application. Recently, we started development of a ASP.NET Core application and had a similar challenge. Our developers work on different operating systems (Windows and Mac). They have different local connection strings and application settings. We had a same problem as
This weekend (that is December 1st, 2018, Saturday), I along with a few of my colleagues from the office got an opportunity to attend DDD Brisbane conference. All thanks to my Employer, Youi, which was also the gold sponsor of the event. (We are hiring). If you do not know what is DDD conference is
A bit of a background I work on a long-running running project in our organization. We have a CI/CD pipeline for our project following the GitHub flow and backed by thousands of unit tests, hundreds of integration tests. However, until recently we were missing a key piece to the puzzle. UI Tests!
I’m quite an unorganized person. I spend most of my time in front of a computer in my office or in meetings. At home, I’m usually busy with my 2-year old or household chores. As a result, my list of ToDo items keeps on growing. And when I do find some time to work on
Testing your applications cross-platform and cross-browser is not an easy problem to solve. Supporting different versions, operating systems and devices can be an extremely frustrating and time-consuming process. It can be especially painful if you need to support legacy browsers like IE 9 or IE 8.
It is a fairly common scenario that during development the local machine configuration settings for different developers in are not same and it may not match with the default value in source control. One such example can be SQL server connection string. Some developers may have SQL Express installed, others may have a named instance
Last year, internet reached an important milestone when it comes to web security. More than half of the websites all over the world are now on HTTPS. As the awareness about HTTPS is rising, more and more organizations and individuals are moving their websites to HTTPS. Certificate authorities like Lets Encrypt which offer free certificates have made
[sg_popup id=”3″ event=”onload”][/sg_popup] Recently, I came across below tweet from security expert Troy Hunt Google now has a security.txt file – so should you! https://t.co/fXmeNG9Yem https://t.co/drbJQ1Ynw8 — Troy Hunt (@troyhunt) February 3, 2018 The tweet talked about a file named security.txt. I went on reading his post to understand what exactly is security.txt and what problem
[sg_popup id=”3″ event=”onload”][/sg_popup]Recently, I came across an interesting tool named Remark (all thanks to my colleague). Remark helps to transform your markdown into a slideshow on a browser. It is very simple and easy to use. To create a presentation with remark all you need to know is a markdown syntax and a little bit HTML/ CSS. It
This is Part 4 and most likely the last part of my series, lesser-known features of C#. The previous parts of this series are available here: Lesser known C# features – Part 1 Lesser known C# features – Part 2 Lesser known C# features – Part 3
This is Part 3 of my series, lesser-known features of C#. The previous parts of this series are available here: Lesser known C# features – Part 1 Lesser known C# – feature – Part 2
This is Part 2 of the series, lesser-known features of C# language. I would suggest you to go through Part 1 if you have not already.
Language C# has become very powerful and mature over the years. As with any other language, C# also has few features which are used lesser than others. These are useful but often forgotten features. Through a series of blog post, I want to talk to about these lesser known/used features of C#. This is Part 1 of the series.
Recently, I came across this article which cited that there are almost 2500 sites that are running cryptocurrency mining code in the browsers. These sites are using out-of-date software with known security vulnerabilities. This gives control to attackers to add a script to generate digital currency at the expense of user CPU and electricity.
Tools and tricks you can use along with Visual Studio to make your life easy as a developer:
Recently, there was an interesting conversation that happened between security expert Troy Hunt and a leading UK bank, NatWest. It all started when someone on twitter reported about the unsecured landing page of NatWest bank.
A few days back, internet at my home was very slow. It took ages to open any webpage. I had found the internet to be slow on earlier occasions as well. But, this time it was just unusable. Out of curiosity, I went to the default gateway of my wireless router. I logged in with
Not too long ago, TFS and SVN were the only source control I had used. I had a very little experience of distributed source controls like Git. So when I got an opportunity to work on Git on a large scale project for the first time, I had my doubts. But, it did not take
In my workplace, our project is set up for Continuous Delivery. We do a production deployment almost daily and sometimes even more than once in a day. Ours is a fairly big solution built primarily on Microsoft technologies and Git as a Source Control. Setting up CI/ CD for your solution is easier said than
In my current project, we use Castle Winsdor for Dependency Injection. I must admit before this project I had never used or even heard of it. I have had some love-hate relationship with Castle Windsor , with more hate than love initially. However, over a period of time, I realized that Castle Windsor is probably
This is part 3 (and possibly the final) of Microsoft Bot Framework Series. If you have jumped right here, you may want to look into my part 1 and part 2 of my blog. In this post, I will explain how to add different channels to the Microsoft Bot Microsoft Bot Framework provides the option
This is part 3 (and possibly the final) of Microsoft Bot Framework Series. If you have jumped right here, you may want to look into my part 1 and part 2 of my blog. In this post, I will explain how to add different channels to the Microsoft Bot Microsoft Bot Framework provides the option
This blog post is Part 2 of how to create a chat bot with Microsoft Bot Framework which can answer FAQs on your website. This is in continuation to my previous post where I explained how to create a QnA service using Microsoft QnA service maker. You can read Part 1 of my post here.
Recently, we had a hack day in our organization. As part of Hack day, we were given one day to work on our hobby project and demonstrate it to everyone. I took that opportunity to learn more about Microsoft Bot Framework and demonstrate its capability. 6 hours later, I was ready with a prototype of a
Originally posted on Deepika Vijay Blog : “A woman is a soul who carries a soul within her” Motherhood, a special feeling coupled with divine emotions, sharing the strongest bond with your child. But being a mother is not an easy job. It is probably one of the toughest jobs, which comes with new responsibility. Unlike…
I’m back to writing blogs after a small break. Things have changed for me personally since, I have made a career move recently. I hope to be more regular going forward. In my new team, we follow Kanban flow. Our application is customer facing and due to nature of our project we need to do a
Warning: The content of this post is highly opinionated. Please exercise caution. 🙂 A bit of Background Back in 2012-13, the term Dev-Ops was unheard of in my team. We were still living in dark ages where a developer would developed the code, then write unit test cases more to get the code coverage look good
When you open VS, the first thing that you notice is the Start Page. In VS 2015 the Start Page provided a useful way to open recent projects, look into tech news. But this is where it stopped. VS 2017 has totally revamped the Start Page experience. It is visually more appealing and offers more options
Visual Studio 2017 was launched with much fan fare yesterday (March 7, 2017). I started exploring Visual Studio 2017 from RC and I must say, after using VS 2017 I felt I was earlier leaving in stone age. It is so much better. In short the Visual Studio 2017 is equivalent to following: VS 2017
aysnc await is probably one of the most important features of C#. It has made the life of developers easy. It helps developers to write clean code without any callbacks which are messy and difficult to understand.
Today, every project we work on big or small, easy or complex, small team or large team is probably on Source Control. The source control of course can be git, VSTS, SVN etc. Still, there are times where you need to share your code as zip in an email, or shared link. It could be because
Recently, I came across this blog post from ASP.NET Monsters which talks about correct using HttpClient. The post talks about issues of related to disposing HttpClient object for each request. As per the post calling HttpClient as below can lead to issues.
In my current engagement, we have more than 80 projects in a solution (don’t ask me why :)). Recently, as per quality guidelines, we needed to make few changes to each project. For example: Treat warnings as errors, enable code analysis for each project, sign assembly etc.
Recently, I needed to scale out my web app hosted on Virtual Machine. After a few hiccups and learnings, I was finally able to Load Balance my web app hosted over multiple Virtual Machines. I have tried to document the steps in the form of a blog here. To scale out I used following configuration: Two
Recently, I worked on a ASP.NET 4.6 MVC 5 project which didn’t have anything MVC about it. 🙂 It was a Single Page Application built on TypeScript, Knockout JS, CSS. Now, since it we didn’t have any server side code, we decided to give Gulp a try to concatenate and minify the JS and CSS
This post is Part 2 of the series – Publish web app to Azure VM. In this post I will take the application, we created in Part 1 and publish it on Azure Virtual Machine through Visual Studio Team Services.
Publish Web App to Azure Virtual Machine Part 1
Setting up a website on classic Azure Virtual Machine is straight forward as in classic Azure VM we have the Endpoints for port 80 and 443 open by default. For each classic Azure VM we also had cloud service created. Hence, if we host a website directly on port 80 or 443 it would work