Some benchmarks of the first version of Samiz's sync code:

Case: 2 devices with 1 different nostr event each

Time from "First seen" to "Devices fully sync": 2.606 secs

Time for a full circle (1 event sent + 1 event received): 0.09 secs

Performance looks great, but:

- There is going to be an extra calculation time when it comes to Negentropy and long lists of events

- This is being tested with both decides on the same room, looks like I'm going to need to touch some grass for testing 😬

I'll work now on the connection to Citrine, which should allow me to stream events once the devices are in sync and still connected.

https://github.com/KoalaSat/samiz

Kudos to nostr:nprofile1qqsyvrp9u6p0mfur9dfdru3d853tx9mdjuhkphxuxgfwmryja7zsvhqpzamhxue69uhhv6t5daezumn0wd68yvfwvdhk6tcpz9mhxue69uhkummnw3ezuamfdejj7qgwwaehxw309ahx7uewd3hkctcscpyug for working on the Kotlin Negentropy library 🚀

Reply to this note

Please Login to reply.

Discussion

Eli5 negentrooy

If Relay1 contains (1,2,,3) and Relay2 contains (3, 4, 5), Negentropy is a protocol to help these 2 relays to synchronize and both endup with (1,2,3,4) in a very efficient way

(1,2,3,4,5)

Okay, I thought it was some Magic offline thing. Maybe finding clients by distance using bluetooth or something.

That's indeed what I'm trying to build https://github.com/KoalaSat/samiz

Just read about negentropy recently and I think I got confused after seeing your posts. These are two different things.

Still... Very cool.

Okay okay okay. That is REALLY fucking cool. One thing I recently have been unsure of is whether my notes that I publish while internet is spotty is really reaching out.

I have a local relay which IMO makes it worse.

This auto syncing is cool. But many thoughts popping into my head now, like what about spamming and/or causing overload and heat.

It's also likely that Citrine is very slow. We need to 100x its db performance.

is citrine just exposing a normal WS api on localhost or what?

Correct. Using sqllite as db

AirDrop?