Skip to content
kc@kumarChandrachooda.com:~$ cd /blog/archive && read --section="top" 0%
Archive

Every article

Newest first, grouped by year. Search or filter by topic.

  • 556 articles
.NET 30 Nov 2025

The Aggregate as One Column

Sales stores four aggregate roots and twenty-five value objects in three tables, by serialising whole aggregates into jsonb - and the reflection resolver that makes reconstitution work bypasses every invariant on the way in.

.NET 30 Nov 2025

The Queries You Cannot Write

What the document strategy really costs - a promoted column, a side table, an in-memory dictionary with a TODO on it, and six update methods that look the row up without its id.

.NET 29 Nov 2025

Asserting on Events When There Are No Getters

Two test files, one estate, one deliberate contrast - and the answer to the question a fully encapsulated aggregate forces on you. Six test methods in 14,559 lines, by design.

.NET 28 Nov 2025

Make the Draft a Different Class

An offer draft and a published offer are not one entity with a status flag - they are two classes, and the transition is a method that returns the second one. What that buys, and what it silently drops.

.NET 28 Nov 2025

One Public Member, Sixteen Consequences

Postsale's aggregate has ten private fields and exactly one public member. Reservation, in the same estate, has eighteen. Following that difference all the way down to the database.

.NET 27 Nov 2025

CRUD, Rich, Clean — And Who Actually Got Which

Testing a README's three-tier architecture claim against the source, and finding that the module nobody mentions holds the only real aggregate in the estate.

.NET 26 Nov 2025

One Domain, Three Dialects

A teaching repo that implements one airline-charter domain three ways on purpose - CRUD, CRUD-plus-rich, and Clean Architecture - and persists it three ways to match. Part 1 of a source-reading series.

Architecture 26 Nov 2025

What Strategy-First Actually Bought Them

An honest retrospective on fifteen parts of source-reading - what the decision records bought, what they could not buy, and the compliance gaps nobody wrote down.

Architecture 25 Nov 2025

Decisions With an Approver and No Date

Four decision records with a named reporter and approver, no dates, no supersession, an architecture board hosted outside version control and a README that links code by line number.

Architecture 24 Nov 2025

Broadcast Without a Filter

Two events in GroupFlights have more than one subscriber, and both are where it breaks - two handlers ask "is this mine?" and two do not, in both directions.

Architecture 24 Nov 2025

The Feature Flag That Is a Constant

A fully built cross-cutting decorator disables an entire context relationship behind a local variable that is always false - while a sibling module enforces the identical rule for real.

Architecture 23 Nov 2025

Correlation Identifier, Invented Three Times

The event interface has no members, so nothing can carry a correlation id - and three modules each rebuild the pattern as application state, one of them in a static dictionary with a TODO.

Architecture 22 Nov 2025

Splitting a Bounded Context, With the ADR Attached

ADR 04 extracts the reservation-change process out of Sales, lists ten steps and two recommendations - and nine of the ten steps are traceable to real code.

Architecture 22 Nov 2025

The Snapshot With No Version

ADR 04 names one risk in prose - changing a reservation on stale information - and the table built to mitigate it has no version, no timestamp and no concurrency check.

Architecture 21 Nov 2025

The Contract That Became Someone Else's Migration

One published type from the Communication module is mapped as an owned entity into TimeManagement's schema - so adding a field to your own contract now needs a migration you do not own.

Architecture 20 Nov 2025

Your Contract Project Is Not Your Contract

Seven of thirteen published integration events in GroupFlights have exactly one consumer - the module that published them - and one has none at all.

Architecture 19 Nov 2025

A Gentleman's Agreement Across Thirty-Five Projects

ADR 01 chose a verbal ban on illegal project references over an automated architecture test - and the ban held perfectly, in an estate whose database boundary has no enforcement at all.

Architecture 19 Nov 2025

The Only Legal Edge Between Modules

Seven contract projects are the estate's entire cross-module surface - and one misplaced marker interface drags the dispatcher framework into two of them by copy-paste.

Architecture 18 Nov 2025

Three Boxes That Were Never Built

Three of the ten contexts on the context map have no code behind them - and reading the absences carefully separates a design placeholder from a forgotten promise.

Architecture 17 Nov 2025

The Context Map the Compiler Drew

A repeatable twenty-minute method for deriving a real context map from the project graph and the event subscriptions - then diffing it against the one on the wall.

Architecture 17 Nov 2025

The Context Map They Drew

ADR 03 declares six relationship patterns across ten bounded contexts and gives a reason for each - read on its own terms, before any code is checked against it.

Architecture 16 Nov 2025

Eight Modules, Three Architectures, One Domain

GroupFlights picks a different application architecture per module on purpose - and the module nobody singled out turns out to hold the only real aggregate in the estate.

Architecture 15 Nov 2025

The Repo That Ships Its Own Design Decisions

Most repositories ship code and a README - this one ships four ADRs with a named approver, a context map, a domain message flow and a methodology poster. Part 1 of a series that reads the strategic half of DevMentors' GroupFlights.

Architecture 15 Nov 2025

The Road Out of the Monolith

Which of ModularMonolith's three modules could become a service tomorrow, what blocks the other two, and the hardening bill the sample never pays - a retrospective on the modular monolith as a station, not a destination.

Architecture 14 Nov 2025

Two Modules, Three Months of Drift

Conferences and Speakers disagree on layout, naming, id policy, exception visibility, mapping style and route constraints - plus a 200 that returns nothing and a broker that threw NotImplementedException for four months. The honest ledger.