Xerxes Blog

engineering

Loading .NET Configuration From a Database: Useful, but Not Free

The trade-offs of database-backed configuration in .NET, including startup, caching, and operational ownership.

engineering #dotnet #configuration #database

Equals and GetHashCode in C#: Why Equality Is Harder Than It Looks

A practical introduction to equality contracts in .NET and the bugs that appear when Equals and GetHashCode disagree.

engineering #csharp #dotnet #equality

Bringing Only Part of a Branch Into Main

Practical Git options for moving selected changes without merging an unfinished branch wholesale.

engineering #git #code-review #workflow

Git Sparse Checkout: Work With Less of a Large Repository

How sparse checkout helps when a monorepo or large repository makes a full working tree unnecessary.

engineering #git #developer-productivity #monorepo

gRPC in Backend Systems: Where It Fits and Where It Does Not

A practical look at gRPC for internal service communication without treating it as a replacement for every HTTP API.

engineering #grpc #dotnet #microservices

Removing an Applied Entity Framework Migration Without Making Things Worse

A cautious guide to correcting a migration that has already reached a database.

engineering #dotnet #entity-framework #database-migrations

The Saga Pattern: Coordinating Work Without a Distributed Transaction

What the Saga pattern solves, where compensating actions become difficult, and when a simpler design is better.

engineering #microservices #distributed-systems #saga

SOLID Principles Without the Ceremony

A pragmatic view of SOLID: useful design pressure, not a reason to turn a small feature into a framework.

engineering #architecture #solid #software-design

SSE vs WebSocket: Choose the Smaller Connection

A decision guide for choosing server-sent events or WebSockets based on communication direction and operational cost.

engineering #realtime #sse #websocket