The Python page loads instantly, while the Ruby page makes several requests before fully loading. Ironically, it seems to be utilizing a rails feature called "turbo streams".
one thing you can do to make the speaker list more performant and seamless is to load the next list of speakers when the scroll gets to some value near the end of the list and also pull a few more speakers in each fetch.
It is already happening and with the availability of the tools like PyO3 [1] (it allows Python developers to write performance-critical code in Rust and then expose it as a Python module) the Rustication of the Python will be progressing while some controversies will appear [2]. Adding new language adds complexity to the python code base but it is always good to have at least choice and decide case-by-case if use Rust in Python app or not.
Why - I suppose that government want to get tactical advantage over protesters by limiting information flow and making protest coordination more difficult.
How - both deep packet inspection + filtering and primitive solution - making communication services (mobile and broadband) stop functioning. Such things happen already in the past in Turkey, Egipt, Iran.
Depending on the type of filtering you could try to tunnel data across UDP (DNS?) or ICMP packets or configure hosts on both ends to ignore TCP RESET packets.
Thanks, I'm aware of that - that is why I was thinking about low cost (say cost of Raspberry Pi) and distributed. When it is low cost - there is grater chance that large number of nodes can be deployed and single point of failure can be avoided.
[1] https://pyvideo.org/