Pavlo Myroniuk
banner
thebesttvarynka.bsky.social
Pavlo Myroniuk
@thebesttvarynka.bsky.social
I did not give up and made things even more complicated: CRDTs. It wasn't what I needed. At some point, I discovered Operation-Based CRDTs. Synchronizing the operations log instead of the full app state looks simple. I elaborated this idea further and decided to use it for the synchronization
August 3, 2025 at 8:58 PM
Then, I tried to store the hash of every object in the database and compare these hashes to determine the state diff. At some point, I went even further and tried to apply Merkle trees (en.wikipedia.org/wiki/Merkle_...) 🤪. Everything looked overcomplicated.
Merkle tree - Wikipedia
en.wikipedia.org
August 3, 2025 at 8:56 PM
I spent around half of the year trying different approaches. It was hard to choose a suitable sync algorithm. I had never implemented such features and had been overthinking it for months. First, I read the rsync algorithm (rsync.samba.org/tech_report/...) documentation and tried to apply it.
rsync.samba.org
August 3, 2025 at 8:55 PM
Moreover, the overall design underwent significant changes during implementation. For example, I replaced the custom auth with Cloudflare Zero Trust Access.
The next steps are debugging, fixing bugs, and writing some documentation.
I hope I will finish it in a month or two 😊
July 13, 2025 at 10:44 PM
Significant achievement 🎉
June 1, 2025 at 7:35 PM
I'm sure you are really a cool CTO 🤘😎
May 22, 2025 at 8:25 PM
how big is your future? (hegdenu.net/posts/how-bi...) – The author in this blog post dives a bit deeper into task size: why it is important, workarounds, and tracing instrumentation. Recommend reading.
how big is your future? - hēg denu - Hayden Stainsby
hegdenu.net
April 1, 2025 at 10:22 AM
How to prevent it? Fortunately, clippy has a lint that can catch huge futures: rust-lang.github.io/rust-clippy/...
`#![warn(clippy::large_futures)]`
Clippy Lints
A collection of lints to catch common mistakes and improve your Rust code.
rust-lang.github.io
April 1, 2025 at 10:21 AM
As you know, every async piece of code is transformed into a struct that implements the Future trait. And future context becomes these struct fields. Of course, I'm not the first one who has faced this issue: users.rust-lang.org/t/stack-over...
Stack overflow in async main function due to excessive stack allocation (*not* from recursion)
I'm new to Rust, so this may be a newbie question. My test application is currently crashing with a stack overflow exception on Windows. The problem is NOT an issue with recursion, but instead many o...
users.rust-lang.org
April 1, 2025 at 10:20 AM