CRDTs: The Key to Strong Eventual Consistency

2025-09-09
CRDTs: The Key to Strong Eventual Consistency

CRDTs (Conflict-free Replicated Data Types) are data structures that can be replicated across multiple nodes, edited independently, and merged seamlessly. This article delves into how CRDTs achieve Strong Eventual Consistency (SEC), a more robust model than traditional eventual consistency. SEC ensures that even with independent updates across multiple nodes, conflicts are resolved automatically and deterministically, leading to low latency, high fault tolerance, and offline functionality. The author argues that CRDTs are fundamental building blocks for strongly eventually consistent systems, with applications extending far beyond collaborative editing and multiplayer to-do lists, into distributed databases and beyond.

Read more

NIH Is Cheaper Than the Wrong Dependency

2025-07-18
NIH Is Cheaper Than the Wrong Dependency

This article challenges the common assumption that software dependencies are always beneficial. The author argues that dependencies incur significant costs, including learning curves, maintenance overhead, security risks, and deployment complexity. Using the TigerBeetle database as an example, the article highlights the advantages of a 'zero-dependency' policy. A framework for evaluating dependencies is proposed, encompassing ubiquity, stability, depth, ergonomics, and watertightness. POSIX system calls, ECMA-48 terminal control codes, and the web platform are used to illustrate the framework's application. The article concludes by urging developers to critically assess the costs and benefits of dependencies before making choices.

Read more
Development

Do Files Want to Be Actors? io_uring and the Convergence of Computing Paradigms

2025-01-04
Do Files Want to Be Actors? io_uring and the Convergence of Computing Paradigms

In high-performance Linux applications, io_uring is revolutionizing OS interaction. It uses submission and completion queues, allowing asynchronous I/O without waiting for syscalls. Simply queue operations and continue computation. This remarkably mirrors the Actor model: objects send messages for concurrent computation. io_uring's sending operations to file descriptors and asynchronously receiving responses strikingly resembles this. This suggests a shift towards asynchronous, self-managing OS behavior; traditional syscall methods might be an outdated abstraction.

Read more
Development