Blog
Notes on software engineering, consulting, and the projects I'm building.
ASP.NET Identity Management with KeyCloak
A step-by-step guide to integrating an ASP.NET application with Keycloak for authentication and authorization using Docker Compose and MariaDB.
Read more →C# — EF Migrations with Kubernetes Jobs
How to deploy MariaDB in Kubernetes and automate Entity Framework migrations with a bundled executable run as a Kubernetes Job.
Read more →C# – Applying EF Migrations
A walkthrough of the different strategies for applying Entity Framework migrations, from CLI tools and SQL scripts to bundles and runtime migration.
Read more →Entity Framework — Concurrency Conflicts Handling
A practical guide to optimistic and pessimistic concurrency control in EF Core, with SemaphoreSlim and DistributedLock examples in C#.
Read more →Constraining your C# Classes
Why implicit, wide-open C# classes hurt code quality, and how adding functionality, concrete constructors, and validation constraints makes them more explicit and robust.
Read more →C# Component Tests: With code examples
A practical guide to writing component tests in ASP.NET, including how they differ from unit and integration tests, with a full working example using WebApplicationFactory.
Read more →Performance Battle: Which Collection is the Fastest in C#
Benchmarking arrays, lists, hashsets, sorted sets, IEnumerable, and Parallel.For in C# with BenchmarkDotNet to see which collection type iterates fastest.
Read more →C# Integration Tests: With code examples
A practical guide to writing C# integration tests, covering database integration testing with Entity Framework and external HTTP service integration testing, with full code examples.
Read more →C# Unit Tests Made Easy
Practical C# unit testing best practices with code examples — from test class structure and test data generators to mocking, auto-mocking containers, and exception testing.
Read more →C# Mappers: Which One is the Fastest?
Benchmarking seven popular C# object-to-object mappers — Inline, Reflection, AutoMapper, TinyMapper, Mapster, ValueInjecter, and FastMapper — for speed and memory usage.
Read more →10 Micro API Ideas to Make Money
Ten simple, focused API ideas — from URL shortening to VIN lookups — that you can build and monetize with usage-based or subscription pricing.
Read more →7 Awesome Tools for .NET Developers
A roundup of seven NuGet packages and libraries — from benchmarking and code coverage to validation and date/time handling — that make .NET development faster and more reliable.
Read more →How to Create a Scraping Tool for Efficient Data Extraction in C#
A step-by-step guide to building a website scraping tool in .NET using Selenium and HtmlAgilityPack, from setting up a Dockerized Chrome driver to extracting data from HTML.
Read more →How good is ChatGPT at C# code performance optimizations
Putting ChatGPT to the test on three real C# performance optimization tasks, then benchmarking its suggestions against hand-written solutions.
Read more →30 Interview questions that every C#/CSharp developer should know
A rundown of 30 core C# and .NET interview questions covering OOP fundamentals, memory management, async programming, and generics.
Read more →