Sign in

zx

@zxch3n.com
735 followers 204 following 71 posts

Founder of @Loro.dev github.com/zxch3n

PostsRepliesMedia
Reposted by zx
Iroh @iroh.computer · 15/06/2026
We just released the first stable version of iroh, v1.0! Read about it: www.iroh.computer/blog/v1 We're super proud of where we landed with iroh's 1.0. Since version 0.35 it feels like we've entirely replaced the "engine underneath". Are you a fellow key-dialer? Come tell us how you use iroh!
iroh.computer
Iroh 1.0 - Dial Keys, not IPs
Iroh 1.0 is out. Now is the time to build.
721862
zx @zxch3n.com · 09/06/2026
Proud to have shipped this with the community. The biggest footgun is fixed! In many “data loss” reports, the data wasn’t gone — it was made inaccessible by map child container overwrites. This class of bugs is now preventable
061
zx @zxch3n.com · 28/11/2025
It is still young, but I found it is already quite suitable for building js lib that needs advanced data structure and algorithm. It is such a pain to write those things in JS directly without proper std lib.
010
zx @zxch3n.com · 28/11/2025
I’ve built several things with it. It’s evolving fast and the DX is quite good. For example, its inspect snapshot test is unique and super useful, combining with its unique way to represent string with `#|`.
110
Reposted by zx
Loro @loro.dev · 30/10/2025
The Loro Protocol repo is now open source! It contains documentation for the wire protocol, along with TypeScript and Rust implementations of WebSocket clients and servers. The protocol allows reusing a single connection to join multiple CRDT rooms, such as Loro documents or the Ephemeral Store.
182
zx @zxch3n.com · 14/05/2025
loro.dev
loro.dev
Loro – Reimagine state management with CRDTs – Loro
Loro - Reimagine state management with CRDTs | Built for local-first software.
000
zx @zxch3n.com · 30/04/2025
Loro Inspector is here! Now you can directly browse the current state and complete edit history of your Loro documents in the browser. You can also use this tool to time travel to any version in the history of your Loro document.
1214
Reposted by zx
Zicklag @zicklag.dev · 08/03/2025
Just implemented the first working attempt at an Entity-Component API on top of the @loro.dev CRDT. It's a super work-in-progress start to the new Leaf SDK that will be powering @roomy.chat and a.weird.one.
Code screenshot:

// First we define our components

const Name = defComponent(
  // Components should all have globally unique identifiers.
  "01JNVY76XPH6Q5AVA385HP04G7",
  // Components are defined in terms of a Loro type
  LoroMap<{ first: string; last?: string }>,
  // We pass a function to initialize the component state to match it's type.
  (map) => map.set("first", "unnamed")
);

// Let's make age a counter
const Age = defComponent("01JNVYC0T0V6SDKDWQP51MYKS1", LoroCounter, (age) =>
  age.increment(1)
);

// Now we can create our entity, which is internally a Loro document.
const ent = new Entity();

// We can check which components an entity has
ent.has(Name); // false

// We can get a component, initializing it if it doesn't exist.
const name = ent.getOrInit(Name);

// We get then get fields on the component
name.get("first"); // unnamed
// And set them too!
name.set("last", "person");

// Happy birthday 🥳 🎂
ent.getOrInit(Age).increment(1);
3427
Reposted by zx
Xuanwo @xuanwo.io · 07/02/2025
Personal software has been trending recently. I enjoyed reading @leerob.com's "personal software" and @edmarferreira.bsky.social 's "selfish software". Hope you enjoy them too! xuanwo.io/links/2025/0...
2195
Reposted by zx
Jacob Bolda @jacobbolda.com · 28/01/2025
Diving into Loro on stream today. Local-first, CRDT library written in Rust. Excited to explore it deeper! Starting in one hour.
youtube.com
Loro Is Local-First State With CRDT
This lib has some big promises. Let's dive in! Wait, is it written in Rust? https://github.com/loro-dev/lorogoing inhttps://github.com/jbolda/local-first#liv...
171
zx @zxch3n.com · 16/01/2025
It's so hard to feel this warmth from interactions on social platforms these days 🥹
040
Reposted by zx
Alden @heyalden.bsky.social · 14/01/2025
The animated gifs and illustrations in @loro.dev's docs are delightful. Finding these docs to be an enjoyable and readily comprehensible introduction to CRDTs. Thanks @zxch3n.com!
0111
Reposted by zx
Loro @loro.dev · 09/01/2025
New version control primitives have been added to Loro: - diff(from, to): calculate the differences between any two versions - revertTo(version): Generate ops to revert to the target version - applyDiff(diff): Apply differences You can use them to implement functions like git squash and revert.
1143
zx @zxch3n.com · 04/01/2025
Joseph Gentle
040
zx @zxch3n.com · 12/12/2024
They were using github.com/tidalcycles/...
github.com
GitHub - tidalcycles/Tidal: Pattern language
Pattern language. Contribute to tidalcycles/Tidal development by creating an account on GitHub.
050
zx @zxch3n.com · 12/12/2024
just watched DJs coding Haskell live?!
2191
zx @zxch3n.com · 02/12/2024
83 GB
020
Reposted by zx
b5 @b5.bsky.social · 29/11/2024
Ok, a rundown of how we get p2p ATProtocol going: 1. Run *standard* ATProto services, locally 2. Use p2p to holepunch TCP connections 3. Add a thin layer for peering management Bundle all that up in an app, and we have a recipe for adding resilience & scaling to Bluesky. 🧵 teim:
diagram showing how two phones will use a new app called "skyroh" to talk to each other over p2p communications channels, and the regular bluesky API
713030
zx @zxch3n.com · 30/11/2024
No, they are expected to be deleted
010
zx @zxch3n.com · 28/11/2024
Sounds like a binding error
010
zx @zxch3n.com · 28/11/2024
@loro.dev is also worth a try!
110
zx @zxch3n.com · 28/11/2024
They can stick with the old version
100
zx @zxch3n.com · 27/11/2024
They have to provide the best timeline with an acceptable privacy policy (though it sounds hard). Otherwise, consumers may leave, putting them in a very different position than previous products. If this becomes a trend, I wouldn't be surprised if people call it the next generation of the Web.
000
zx @zxch3n.com · 27/11/2024
From another perspective, we can also think that their design forces them to compete more fairly for advertising business with other app views or recommendation streams without the network effect advantage.
100
zx @zxch3n.com · 27/11/2024
Thanks for the elaboration!
110
zx @zxch3n.com · 27/11/2024
bisecting issues is much easier in a linear history
020
zx @zxch3n.com · 27/11/2024
Was listening to *City of Stars* and saw this 😭
010
zx @zxch3n.com · 27/11/2024
Yeah, I'd like to build upon that
000
zx @zxch3n.com · 27/11/2024
Once ATProtocol has formed network effects and is sustainable, future companies can explore more ethical business models in this decentralized ecosystem.
110
zx @zxch3n.com · 27/11/2024
Although I am excited about the next generation of the web, such things have never been accomplished by a single company alone. I hope that Bluesky can take a pragmatic approach (rather than pursuing innovation in everything) and prioritize the sustainability of the ATProtocol ecosystem.
210
zx @zxch3n.com · 27/11/2024
I also look forward to seeing different business models or using user devices to provide computing power to reduce marginal costs. But if Bluesky has to make another bet on a different business model for reasons like "ethical" considerations, the chances of failure would be too great.
100
zx @zxch3n.com · 27/11/2024
Bluesky has already made a significant bet on ATProtocol and may have exhausted its innovation budget. It's unrealistic and unfair to require a company to build everything in an innovative and "ethical" way.
110
zx @zxch3n.com · 26/11/2024
The slides for the talk are available here: loro-slidev.vercel.app
0124
zx @zxch3n.com · 26/11/2024
I don't see it that way. Google also profits from ads, but I consider it a great product. Companies can choose how 'evil' they want to be. And if Bluesky can make ATProtocol popular and sustainable, that's already a great achievement.
120
zx @zxch3n.com · 26/11/2024
It's also rather simplistic to categorize the evolution of the Web into different generations merely based on broad business model classifications
100
zx @zxch3n.com · 26/11/2024
I read the thread, but it assumes Bluesky cannot use the Web 2.0 business model. And the thread seems to assume Bluesky needs to become Web 3.0. But why is this the goal? IMO adopting the Web 2.0 business model does not raise any ethical or legal issues.
300
zx @zxch3n.com · 26/11/2024
But why can't Bluesky just sell ads? Why do they have to be innovative in the business model besides the open protocol? I don't think the only reason people would use Bluesky is because it is ad-free right now. For me, it’s more about decentralized moderation and the ownership over personal data.
100
zx @zxch3n.com · 26/11/2024
Could you share the link about hidden tags? I cannot find the related resources.
100
zx @zxch3n.com · 26/11/2024
Ha! That's much simpler and robust. Do Bluesky posts support hidden tags?
100
Reposted by zx
Yonz @yonz.bsky.social · 26/11/2024
Catch the deets at our upcoming LoFi/21 meetup 👉🏽 lofi.so
021
zx @zxch3n.com · 26/11/2024
How does this work? Is there a machine that subscribes to the firehose to filter posts with #BlueskyComments, thereby generating corresponding threads based on the URLs and comments in the posts?
100
zx @zxch3n.com · 24/11/2024
Stay sane by using CRDTs when possible
030
Reposted by zx
b5 @b5.bsky.social · 24/11/2024
Finished another skim through the eg-walker paper: arxiv.org/abs/2409.14252, can’t wait to try it out in loro.dev
arxiv.org
Collaborative Text Editing with Eg-walker: Better, Faster, Smaller
Collaborative text editing algorithms allow several users to concurrently modify a text file, and automatically merge concurrent edits into a consistent state. Existing algorithms fall in two categori...
1132
zx @zxch3n.com · 18/11/2024
🙋‍♂️
010
Reposted by zx
Yonz @yonz.bsky.social · 15/11/2024
Join us for #LoFi/21 on Tuesday, November 26th, 2024, @ 8 AM PST 👉🏽 lofi.so. We have yet another exciting lineup featuring Felicia Chang (x/@felchang) from x/@jamsockethq, Sahil Lalani (x/@SahilLalani0) and Zixuan Chen (x/@zx_loro) from x/@loro_dev #localfirst #lofi #meetup
1165
Reposted by zx
Rizumu Ayaka @rizumu.ayaka.moe · 15/11/2024
We are developing a local-first map community powered by ATProto - share your favorite cafes, discover your neighborhood, and explore new places wherever you go 🗺️☕️
2132
Reposted by zx
localfirst.fm @localfirst.fm · 12/11/2024
Episode #17 is out. Kyle Simpson on local-first identity, encryption, passkeys and authn. www.localfirst.fm/17
localfirst.fm
#17 – Kyle Simpson: Local-first identity - localfirst.fm
A podcast about local-first software development.
1144
zx @zxch3n.com · 12/11/2024
What happened to npm downloads?
curl -s https://api.npmjs.org/downloads/range/2024-11-05:2024-11-12/ | jq .
{
  "start": "2024-11-05",
  "end": "2024-11-12",
  "downloads": [
    {
      "downloads": 12058492966,
      "day": "2024-11-05"
    },
    {
      "downloads": 0,
      "day": "2024-11-06"
    },
    {
      "downloads": 0,
      "day": "2024-11-07"
    },
    {
      "downloads": 0,
      "day": "2024-11-08"
    },
    {
      "downloads": 0,
      "day": "2024-11-09"
    },
    {
      "downloads": 0,
      "day": "2024-11-10"
    },
    {
      "downloads": 0,
      "day": "2024-11-11"
    },
    {
      "downloads": 0,
      "day": "2024-11-12"
    }
  ]
}
000
zx @zxch3n.com · 10/11/2024
Implemented the A* by combining it with the Myers Diff’s divide and conquer process. It works fine now
000
zx @zxch3n.com · 07/11/2024
An update like this is also less efficient for CRDTs, even though it is a minimal edit script. Because it is harder to compress a scattered update.
000