Outside Runtime BoundariesIn software engineering, async • await has fundamentally changed the way we develop asynchronous and concurrent applications.Sep 6, 2023Sep 6, 2023
A Tale of Two SpectrumsIn this post, we will explore distributed systems through the lens of two fundamental dimensions: sync vs async and sequential vs…May 28, 20231May 28, 20231
The Magic of AbstractionsIn Structure and Interpretation of Computer Programs, the term abstraction appears on page one, chapter one, headline one.May 20, 20231May 20, 20231
Getting started with small-step operational semanticsIn this post, I will design SagaLang, a tiny “programming language” to illustrate the ideas behind SOS.Mar 28, 20232Mar 28, 20232
Paper Summary: SagasThis post explores the origins of the concept of Sagas, long-running processes that span multiple database transactions.Feb 15, 2023Feb 15, 2023
Handling Failures From First PrinciplesThe post presents a blueprint for a principled failure handling strategy that guarantees correctness while maximizing the chance of successOct 22, 20223Oct 22, 20223
Paper Summary: Fundamentals of Fault-Tolerant Distributed ComputingThis paper explores the very foundations of failure, failure tolerance, and failure transparence.Sep 6, 2022Sep 6, 2022
Paper Summary: End-to-End Arguments in System DesignThe 1984 paper End-to-End Arguments in System presents a design principle that helps guide placement of functions in a distributed systemAug 15, 2022Aug 15, 2022
Kubernetes Network PolicyNetwork Policies determine if an incoming (Ingress) or outgoing (Egress) message is permitted or prohibited by the Kubernetes Network.Feb 9, 20212Feb 9, 20212