20 years designing and building enterprise software. I specialize in turning complex business problems into scalable distributed systems.
Leading architecture decisions for multi-tenant platforms using .NET, Microsoft Orleans, and event-driven architectures. I design systems that handle thousands of concurrent conversations with sub-millisecond latency using the Actor Model, Event Sourcing, and CQRS patterns.
I believe good architecture emerges from understanding the domain first. My systems are built on:
- Domain-Driven Design — Business logic lives in the domain, not in controllers or databases
- Event Sourcing — Every state change is an immutable event. Full audit trails, time-travel debugging, analytics from event streams
- Actor Model (Orleans) — Each entity is an independent actor. No locks, no race conditions, horizontal scaling built-in
- Tiered Storage — Hot data in memory, warm data in database. Automatic archival with temporal partitioning by day
A multi-tenant conversation management system handling WhatsApp, Instagram, and other messaging platforms.
The challenge: Route thousands of customer conversations through customizable workflows while maintaining real-time analytics and full audit compliance.
The solution:
- Orleans Grains for conversation state (ConversationGrain, InboxGrain, CardGrain, WorkflowGrain)
- Event Sourcing with hot storage (100 events in-memory) and warm archive (partitioned by day)
- Broadcast Channels for decoupled event distribution across the system
- Workflow Engine with kanban-style stages, cycle management, and load balancing (round-robin, weighted, least-busy)
- Platform Strategy Pattern abstracting messaging platform differences (24-hour windows, templates, capabilities)
Scale: 2,400+ source files, modular monolith architecture, real-time SSE updates, distributed cache invalidation.
Clean Architecture implementation with Blazor SSR demonstrating modular monolith patterns and external API integrations.
Open-source .NET 8 template that jumpstarts projects with Clean Architecture, FastEndpoints, MediatR, and FluentValidation.
Distributed Systems Orleans Grains | Broadcast Channels | Temporal Partitioning
Architecture Clean Architecture | Modular Monolith | DDD | CQRS
Event-Driven Event Sourcing | Domain Events | Tiered Storage
Backend .NET 8 | ASP.NET Core | .NET Aspire | Blazor | EF Core
Frontend TypeScript | React | Astro | PWA
Infrastructure Docker | Azure | PostgreSQL | Azure Table Storage
Ship working software. Avoid premature abstraction. Let the domain drive the design. Document decisions, not just code.




