RSSAmplifier

Blog

Matthew Weidner

Common Curriculum / CMU PhD student

mattweidner.comRSS feed ↗10 posts

Latest posts

Collaborative Text Editing without CRDTs or OT

This blog post describes an alternative, straightforward approach to collaborative text editing, without Conflict-free Replicated Data Types (CRDTs) or Operational Transformation (OT). By making text editing flexible and easy to DIY, I hope that the approach will let you create rich collaborative apps that are challenging to build on top of a black-box CRDT/OT library.

Architectures for Central Server Collaboration

This blog post records some thoughts on how to architect a real-time collaborative app when you do have a central server.

Announcing list-positions

List-positions implements the same abstraction (unique immutable positions) as my position-strings library, but with actually practical performance for text and large lists.

CRDT Survey, Part 1: Introduction

In this blog series, I survey CRDT techniques for collaborative apps. My goal is to demystify and summarize the techniques I know about, so that you can learn them too without a PhD's worth of effort.

CRDT Survey, Part 2: Semantic Techniques

CRDT semantic techniques help you decide what your app's state should be, given the operations that users have performed. Like the data structures and design patterns that you learn about when programming single-user apps, these techniques provide valuable guidance, but they are not a replacement for deciding what your app should actually do.

CRDT Survey, Part 3: Algorithmic Techniques

Let's say you have chosen your collaborative app's semantics in style of Part 2. CRDT algorithmic techniques help you implement these semantics efficiently.

CRDT Survey, Part 4: Further Topics

This post concludes my CRDT survey by describing further topics that are outside my focus area. It is not a proper survey of those topics, but instead a lightweight bibliography, with links to a relevant resource or two.

“Position Strings” for Collaborative Lists and Text

I recently published a new TypeScript library on npm: [position-strings](https://www.npmjs.com/package/position-strings).

Fugue: A Basic List CRDT

CRDT collaborative text editing using a binary-ish tree.

Designing Data Structures for Collaborative Apps

Simple CRDT techniques for the data layer of a collaborative app.