<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Distributed Systems on mhbxyz.me</title><link>https://mhbxyz.github.io/en/tags/distributed-systems/</link><description>Recent content in Distributed Systems on mhbxyz.me</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 19 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mhbxyz.github.io/en/tags/distributed-systems/index.xml" rel="self" type="application/rss+xml"/><item><title>OpenWatchParty: synchronize playback despite latency</title><link>https://mhbxyz.github.io/en/articles/openwatchparty-synchronize-playback-despite-latency/</link><pubDate>Mon, 19 Oct 2026 00:00:00 +0000</pubDate><guid>https://mhbxyz.github.io/en/articles/openwatchparty-synchronize-playback-despite-latency/</guid><description>&lt;p&gt;In my &lt;a href="https://mhbxyz.github.io/en/articles/openwatchparty-synchronized-watch-parties-for-jellyfin/"&gt;first OpenWatchParty article&lt;/a&gt;, I introduced the Jellyfin plugin and its Rust session server. The harder question remained: how do you make the same scene play at the same time on several machines when their clocks, networks, and players behave differently?&lt;/p&gt;


&lt;h2 id="establish-a-shared-clock"&gt;Establish a shared clock&lt;/h2&gt;
&lt;p&gt;The server cannot assume that two computers display the same time. The client therefore sends a timestamped ping. When the response arrives, it measures the round-trip time and estimates the offset between its clock and the server&amp;rsquo;s. Several measurements are smoothed so that a latency spike does not cause a sudden jump.&lt;/p&gt;</description></item></channel></rss>