Correlated error logging
Explains the correlated error logging pattern for tracking errors across microservices using unique request IDs.
Explains the correlated error logging pattern for tracking errors across microservices using unique request IDs.
A guide to modernizing alerting practices in distributed systems, advocating for observability, SLOs, and paging only on user-impacting issues.
Explains the Outbox Pattern for reliable event publishing in distributed systems, addressing atomicity issues between database transactions and external messaging.
Argues that the PIE theorem (Pattern Flexibility, Efficiency, Infinite Scale) is more practical for database selection than the popular CAP theorem.
Foreword for a book on Reactive Application Development, discussing its evolution, principles, and practical implementation in modern systems.
Explores applying the Actor Model, a concurrency concept from the 1970s, to modern web development using JavaScript and Web Workers.
A developer's critique of the complexities and frustrations in implementing and standardizing HTTP clients for microservice communication in Java/Scala ecosystems.
Foreword for a book on Reactive Design Patterns, discussing the principles and growing adoption of Reactive Systems in software architecture.
A foreword discussing the convergence of Reactive Systems and Microservices architectures for modern distributed software development.
Explains the Buffer Fill Pattern for optimizing batch data processing in asynchronous distributed systems, using TPL DataFlow.
Explains how to implement custom communication protocols (like WCF or RPC) in Azure Service Fabric Reliable Services, covering both client and inter-replica channels.
A discussion on the architectural and communication challenges in distributed systems and microservices, focusing on contracts, APIs, and team dynamics.
An analysis of concurrency bugs, their prevalence, and the disproportionate debugging time they consume, citing academic studies.
Explores how hypermedia APIs reduce coupling in distributed systems by minimizing client assumptions, using RESTBucks as an example.
A curated list of insightful programming blogs covering topics like JVM internals, performance, ML, engineering culture, and computer architecture.
A keynote transcript on Microservices, analyzing them from first principles and their true context as distributed systems.
Explains why desktop apps corrupt files and the technical challenges of ensuring crash consistency when saving data.
Analysis of how 'limping' or slow hardware nodes can severely degrade distributed system performance, based on academic research.
A technical tutorial on building an IoT solution using Microsoft Orleans and Azure, covering grains, state persistence, and deployment.
An introduction to using Microsoft Orleans for building scalable IoT solutions on Microsoft Azure, covering its benefits over traditional SOA.