Helpful development and architecture advice for .NET developers

  • Home
  • Posts
  • Newsletter
  • Products

© Nick Chamberlain, LLC

  • 3 Reasons to Model Identity as a Value Object
  • Pre-orders open for my new ebook!
  • Handling Non-Aggregate Root Events for Child Entities
  • Why we Avoid Putting Value Objects in Events
  • EventStorming's Coincidence with Business Process Improvement
  • Let's ship something together...
  • How do We Write Factories for Event Sourced Aggregates?
  • Using Event Sourcing in a Legacy Environment
  • Awkward Aggregate Root relationships and how to rethink them
  • A Reactive Process Manager in C# with Akka.NET
  • User Interface
  • The Read Model Facade
  • Handling Events on the Read Side
  • Projection
  • Publishing Events to the Bus
  • Testing the Bus
  • Sending Commands to the Bus
  • The Bus
  • The Read Model
  • An Executable Specification
  • Testing an Event Sourced Aggregate Root
  • Aggregate Event Persistence
  • Event Store
  • Command Handlers
  • Implementing an Event Sourced Aggregate
  • Design Level EventStorming Continued
  • Complexity and Cost
  • Design Level EventStorming
  • People and Commands
  • Hotspots
  • Domain Discoveries
  • Big Picture EventStorming
  • The Domain - First Pop Coffee Company
  • Un-swallowing Swallowed Exceptions with Fody and IL Weaving
  • More Efficient Domain Modeling with EventStorming
  • Where do you find resources for learning DDD, CQRS, Event Sourcing, and EventStorming?
  • Has the code devolved into a big ball of mud?... What can you do about it?
  • Does your workplace use best practices?...
  • I was thrown into the codebase from day 1...
  • I've inherited 200k lines of spaghetti code... what now?
  • Are you working on the greenfield code that you always dreamed of?...
  • What's better: bad tests or no tests at all?...
  • Cracking open a legacy code 'black box'...
  • Nobody plans to write smelly tests...
  • Debugging all the time isn't fun...
  • Just starting out with Domain Driven Design?
  • Flipping a Boolean When All Values Meet a Condition with LINQ
  • 3 Ways to Loop Without do/do-while/for/foreach/etc...
  • Why Delegates? Why not Call Methods Directly?
  • New to Testing Time-Dependent Code?... Use NodaTime.Testing!
  • How to Map Nested JSON Objects to a .NET Dictionary
  • Weekly Keyboard Shortcut #5: ReSharper's Generate Type Constructor
  • Weekly Keyboard Shortcut #4: ReSharper's Go to File Member
  • Changing a Type within a Class when you Instantiate: An Intro to Generics
  • Weekly Keyboard Shortcut #3: ReSharper's Expand/Shrink Selection
  • Weekly Keyboard Shortcut #2: ReSharper's Rearrange Code
  • Weekly Keyboard Shortcut #1: ReSharper's Go To Everything
  • Getting Started with Entity Framework Code-First with an Existing Database
  • Erlang-style Supervisors in C# with Akka.NET and the Actor Model
  • Converting DateTimes by Offsets with NodaTime
  • Singleton Indexer - A Workaround for not having Static Indexers in C#
  • Bad Data, Try/Catch, and Slow Performance
  • Throwing an Invalid Cast Exception?... Look Out for Unboxing
  • Calculating Values using Calculated Values in LINQ
  • Exposing IQueryable in a CQRS Query Stack
  • A Pattern to Decouple your Aggregates from their Clients
  • A Better Way to Project Domain Entities into DTOs
  • Do I Really Have to Unit Test This Method?
  • What Needs to Be Disposed?
  • What's the Point of the 'dynamic' Primitive Type?...
  • Keep an Eye On Your Azure Service Bus with the Particular Platform
  • Building with Azure Service Bus?... Take a Test Drive with the NServiceBus Sample Project
  • How to Compare Object Instances in your Unit Tests Quickly and Easily
  • Entity Framework: Modeling an Email Domain with CC and BCC Addresses
  • Should You Jump into Unit Testing before OOP?
  • How Working the 'Vertical Slice' Can Fix your Coding Mental Block
  • Using TDD to Break Through 'Paralysis by Analysis'
  • Management Doesn't Care about Code Quality?... 3 Ways to Cope
  • A Strategy for an Unmovable Legacy Architecture
  • Struggling to Keep Up?... We All Are
  • How to Deal with Pre-Commit Nervousness
  • My AE/ED Line-Based Text Editor Cheat Sheet
  • The Simple Programmer Email Course
  • Logging with Ninject Interception and Serilog - Part 3
  • Logging with Ninject Interception and Serilog - Part 2
  • Logging with Ninject Interception and Serilog - Part 1
  • How to Do Dependency Injection in a CRM Plugin