Revisiting Essential Elements of the Ports and Adapters Architecture Style

I will attempt to define each element of the style a bit and also show some C# code examples to illustrate the points

An Exercise in Domain Modeling Guided By Strategic Domain Driven Design – Part 2

In this final part, I will review the current domain model, explore alternatives and make some model improvements keeping in mind the outcome of the design level event storm. Finally I will end with some DDD takeaways that should be applicable generally

An Exercise in Domain Modeling Guided By Strategic Domain Driven Design – Part 1

A practice in domain (re)modeling using my pet project, guided by strategic and tactical DDD patterns.

Systems Thinking and Technical Debt

In this post I will try to use simplified Systems Thinking modelling language to put technical debt in the larger organisational context with the hope that it will make some sense to everyone.

Some More Lessons Learned in Event Driven Architectures

In this post I present some finer grained lessons we’ve learned (a. k. a burn marks) since then having solved some foundational problems that surfaced due to not paying enough attention to the failure modes inherent in EDAs, upfront

Using C# Source Generators to Generate Data Transfer Objects (DTOs)

Using C# Source Generators to generate DTOs could potentially save a lot of developer time, so in this post I am going to attempt to write just such a generator.

Curious Case of Database Transaction Deadlocks Using TransactionScope

We built an event driven system in my team over 2 years ago that sometime back ran into database transaction deadlock problems which puzzled me enough to want to take a deeper look into what happened. This mini-post is a bit of documentation of that investigation.

Some Heuristics for Mocking vs State Verification in TDD

In this post I will share some of the TDD heuristics that I have found useful on when you should use mocking to verify interactions and when should you resort to state verification.

Implementing Pipes & Filters Architectural Style With Azure WebJobs

…the whole business process can be divided into smaller asynchronous sub-processes with each one feeding i.e. “piping” its output into the input of the subsequent process(es). At each stage some processing is done for e.g. data enriching, filtering etc and this processing generically is termed as a “filter”.

Implementing Strangler Pattern using IIS & URL Rewriting for Legacy Systems Migration

Strangler pattern is a way of migrating from legacy applications to new ones with both being operational at the same time and the upgrade happening behind the scenes gradually.

Using Serverless Functions to Build a Microservices Architecture

Seeing as micro-service architectures are all the rage these days, I decided to dip into it by building…

JWT Token Authentication with Cookies in ASP.NET Core

In this post I will show one way to mix JWT Token authentication with cookie authentication using ASP.NET Core and send out the JWT in a response cookie.