This time we're going to cover a new implementation of persistent key value store, using Conflict-free Replicated Data Types (CRDTs) to enable multi-process writes. Moreover, this approach enables shift of replication protocol from custom made gossip servers into…
rust
A collection of 7 posts
Is Rust a good choice for business apps?
While you may hear a lot of harsh words about Rust is this rant, that doesn't have to mean it's a bad language. Rephrasing the classic: there are two types of programming languages: ones that people…
Reading tens of thousands of Redis Streams at the time
In this blog post we'll discuss challenges and solutions for concurrent reading from massive amount of Redis streams without running into limitations of the Redis protocol or our machine resources. First let's describe our problem. We…
Can Yrs fit my table?
In this blog post we'll design a collaborative 2D table structure using yrs - Rust port of popular yjs conflict-free replicated data types library for creating real-time, local-first apps. We'll also cover some optimizations to improve…
Non-interleaving Linear Sequence (LSeq) CRDT
Today we're going to jump into LSeq - one of the famous text-editing conflict-free replicated data types we briefly introduced in the past blog posts. This time we're aiming for fixing one of the popular issues…
WebAssembly and replayable functions
... or how to make a non-deterministic functions deterministic through the power of isolated WASM sandbox. This time we'll go through the problems of unpredictability in code, which execution could be affected by external factors like I/O operations,…
Deep dive into Yrs architecture
In this blog post we're going to cover the the internals and architecture behind Yrs [https://crates.io/crates/yrs] (read: wires) - a Rust port of popular Yjs [https://yjs.dev/] CRDT library used for building collaborative…