Many years back, we started on a new, long term project, and to start off with, we built the architecture around an onion architecture. Within a couple of months, the cracks started to show around this style and we moved away from that architecture and towards CQRS (before it had| Jimmy Bogard
One of my main goals of commercialization of AutoMapper and MediatR was being able to finally invest time in these projects where basically all new work stopped when I lost corporate sponsorship. I wanted to take some time to share where I'd like to take these projects now| Jimmy Bogard
Today I'm excited to announce the official launch and release of the commercial editions of AutoMapper and MediatR. Both of these libraries have moved under their new corporate owner (me), Lucky Penny Software. I formed this company to house these projects separate from my consulting company, but it&| Jimmy Bogard
In my last post, I shared the news that I've decided to take a commercialization route for AutoMapper and MediatR to ensure their long-term success. While that post was heavy on the motivation, it was intentionally light on the details. I did share that I wanted to be| Jimmy Bogard
I pushed out MediatR 12.5 today: Release Notes NuGet This is mainly a regular minor release with a couple extra interesting features: Adding convenience method to register open behaviors Better cancellation token support (it's passed now everywhere including behaviors) And some other cleanup items as well. Enjoy!| Jimmy Bogard
I pushed out version 14.0 (!) of AutoMapper over the weekend: Release notes NuGet This release targets .NET 8 (up from .NET 6 from the previous release). It's mainly a bug fix release, with some quality-of-life improvements in configuration validation where we gather up all the possible validation| Jimmy Bogard
I've got another training event coming up focusing on Domain-Driven Design with Vertical Slice Architecture in Munich on October 21-23rd. A little different than the previous times I've given this course is an option for either a 2-day or 3-day version. I had received feedback that| Jimmy Bogard
The last training course in Zurich was a success, in that no laptops were harmed. I think. I put a poll out on where I should do the training next and quite a few folks suggested the Netherlands. I'm happy to announce that the next VSA course will| Jimmy Bogard
Something new I'm starting this year is a two-day course on Modern .NET systems with Vertical Slice Architecture. It contains a lot of topics that I've consulted with organizations and built systems around for around over a decade now, and I wanted to wrap my learnings| Jimmy Bogard
Today I pushed out AutoMapper 13.0 (is that too many...?): * Release Notes * Changelog * NuGet * Upgrade Guide Probably the biggest change with this release is folding in Microsoft.Extensions.DependencyInjection support directly. The AutoMapper.Extensions.Microsoft.DependencyInjection package is deprecated as a result. Side note, the docs were messed up| Jimmy Bogard
I'm Jimmy Bogard, a software architect and consultant. I created the OSS libraries AutoMapper, MediatR, and Respawn. I help teams build systems faster, better, and more maintainable.| Jimmy Bogard
Yes, another one of "those posts". But tl;dr: In order to ensure the long-term sustainability of my OSS projects, I will be commercializing AutoMapper and MediatR. I did not post this on April 1st for obvious reasons. But first a little background on how I got to this point.| Jimmy Bogard
I've been playing around with Aspire for a bit mainly to understand "is this a thing I should care about?" and part of what I wanted to do is take a complex "hello world" distributed system and convert it to Aspire. Along the way, Particular Software also released container support| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights In the last post, we looked at migrating our middleware, which we tackle in an as-needed basis. When a controller needs| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights In the last post, we looked at tackling probably the most important pieces of middleware - authentication. But many ASP.NET| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights Of all the topics in .NET migration, authentication, like always, is the one that is most characterized by "It Depends". The| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights In the last post, we encountered our first instance of shared runtime data between our different ASP.NET 4.8 and| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights Believe it or not, things have been relatively simple so far. In the next few posts, we'll get to the more| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights Back when we looked at our first controller, we tried out the "automatic" migration and the controllers migrated just fine but| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights In the last post we moved just our initial controller over but none of the code used by the controller yet.| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights In the last post, we prepped for our first set of pages migrated by extracting common logic into a shared library.| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights In the previous post, we established a beachhead with a completely empty proxy application to prepare for migrating controllers incrementally all| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights In the previous post, we looked at techniques for determining the size and scope of our .NET migration effort, as well| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights When I talk with folks about modernization, inevitably the question comes up "OK but how much is it going to cost?| Jimmy Bogard
Posts in this series: * Intro * Cataloging * Empty Proxy * Shared Library * Our First Controller * Migrating Initial Business Logic * Our First Views * Session State * Hangfire * Authentication * Middleware * Turning Off the Lights Over the past year or so I've been part of a large-ish modernization effort, both migrating from .NET 4.8 to| Jimmy Bogard
I guess it was inevitable, but quite often I see homework problems on r/microservices seemingly assigned in some intro CS class. Peculiarities of that aside, they can be quite fun to work through as thought experiments. One recent one came up: Hi, I am working on a school app.| Jimmy Bogard