I have been designing and shipping software since 1984, across fourteen industries.
Today I run Legacy to Modern LLC, where I modernize MS-DOS, Visual Basic, Delphi and .NET applications while preserving the business rules inside them. Legacy applications are successful because they made it this far and fulfil a purpose. They deserve to be treated accordingly.
My technical focus is Domain-Driven Design, CQRS and Event Sourcing.
I have completed a 452-page practitioner's guide to Event Sourcing and CQRS. The manuscript is in submission, so there is no publication date to announce yet.
The reference implementation it was built on is public and MIT licensed:
event-sourcing-cqrs — .NET 10, an order-management domain across five bounded contexts, event-sourced end to end. Four event stores behind one interface as first-class peers: PostgreSQL, SQL Server, KurrentDB and DynamoDB, all passing the same contract suite. Fifty-three architecture decision records carry the reasoning.
It is a reference implementation rather than a sample. Clone it, run it, and tell me where it is wrong.
I write about event sourcing, CQRS and legacy systems at thomasjaeger.org.

