About Me
· 1 min readI'm the founder of Loro. We build tools for local-first development and collaboration.
I'm the founder of Loro. We build tools for local-first development and collaboration.
This article introduces the algorithm to draw non-layered trees in linear time and re-layout partially when some nodes change in O(d) time, where d is the maximum depth of the changed node.
A brief introduction to what Conflict-free Replicated Data Type (CRDT) is, its origin & current status.
Loro 项目中的一个 Bug 的 Debug 过程
读了一篇 Wait But Why 2015 年的长文, 讨论的是马斯克的秘方:他为什么做这些事,为什么能够做到这些事。以马斯克为切入点,文章主要讨论了人们的思考方式,其深度让人醍醐灌顶,在此摘录一下
如何通过 Comlink 无痛使用 Web Workers & Comlink 是如何实现的
Haskell 的惰性数组是什么,如何使用惰性数组 & 如何在 JS 中模拟类似功能的惰性数组
临时的 CRDT 设计方案容易出错,是否有指导性原则来辅助 CRDT 算法的设计?如何从零开始设计一个 CRDT?本文解读了 2011 年 Marc Shapiro, Conflict-free replicated data types,该论文正式定义了 CRDT,并给出了简单明确的 CRDT 设计方法。
CRDT 入门第一篇。简单介绍 Conflict-free Replicated Data Type (CRDT) 是什么,起源 & 现状
在 js 中我们一般通过 throw, try..catch 来处理 error, 但是这种方式无法保证类型安全,即一个 function 无法告诉使用者它可能出现的必须要被处理的问题。通过借鉴 Haskell & Rust 的语法,我们可以有更优雅的处理方式
You own your data, in spite of the cloud