#556 – May 11, 2025
Enhancing retry patterns with a bit of randomness
Harnessing the power of Jitter: Enhancing retry patterns with a bit of randomness
8 minutes by Davide Bellone
Davide explores strategies for handling transient failures in systems through retry patterns. It compares linear backoff and exponential backoff, while highlighting the "Thundering Herd problem" where synchronized retries from multiple clients can overwhelm systems. He explains how introducing jitter effectively mitigates this issue by staggering requests, resulting in better system stability, improved resource utilization, and enhanced reliability in distributed systems.
How to Turn Your UI Toolkit into a Scalable Design System
sponsored by Progress Telerik
Your component library isn't a design system—but it could be. Learn how bridging the gap enhances collaboration, consistency, and scalability across teams. Turn your UI toolkit into a unified design system.
Why should I use .NET Aspire?
8 minutes by Christian Nagel
Christian shows what needs to be done to add .NET Aspire functionality to existing applications without the built-in Visual Studio feature. Aspire doesn't require changing existing deployment practices and the technology offers structured logging, distributed tracing, and metrics collection with just small adjustments to existing projects.
Multi-tenancy in ASP.NET Core 8
7 minutes by Michael McKenna
In this article Michael revisits multi-tenancy implementation in ASP.NET Core 8 and focuses on the first key component – tenant resolution. He describes how to identify which tenant is making a request by creating resolution strategies and implementing tenant lookup services.
Fifty years of Microsoft developer tools
12 minutes by Rico Mariani
Rico chronicles the evolution of Microsoft's programming tools from the 1975 BASIC for Altair 8800 to modern AI-powered development environments. He traces key milestones like Visual Basic's revolutionary impact on Windows application development and the critical .NET Framework transition.
StringComparison.InvariantCulture is not always invariant
2 minutes by Gérald Barré
InvariantCulture is great for formatting, but not for string comparisons as it can behave differently across platforms due to ICU or NLS differences. Gérald suggests to use StringComparison.Ordinal for consistent, reliable comparisons and enforce this with tools instead.
And the most popular article from the last issue was: