Nice! Built a similar system in the past using a servo-controlled traxxas buggy with an LTE hat, which let us do open-space driving. Latency (over internet) was still a challenge, and finding cameras and lenses that performed well across varying lighting conditions turned out to be a bit of a pain but pretty fun stuff.
Been using raylib for years to power generative digital paintings on embedded systems (RPI and the like). I have been really impressed with its performance and accessible API. Plus it's a very active and welcoming open source project, kudos to the maintainer.
I've been using raylib for years now to implement digital signage art and it's been a pleasure to work with, especially thanks to its excellent multi platform support (used many Raspberry PIs). Really well thought, intuitive API, kudos to the author.
Amazing to think they were actually spawning 150k headless browsers to simulate the traffic. That sounds like throwing money at the problem and it probably worked (for a while anyway).
Having built a load-test tool as well, I can say making it realistic enough and keeping it that way is possibly the hardest challenge. Maintenance cost is high, especially in a features focused environment.
This is great and overdue. Hopefully all major browsers will add some support for open source/royalty free codecs.
Emscripten/WebAssembly actually worked rather well with audio (OPUS is just awesome) but when it comes to video it's just unfeasible, especially if you are looking at doing low latency streaming. That said, I cannot fail to mention the incredible effort done by ogv.js [1] to make a/v decoding possible almost anywhere.
At Mattermost we went for the do-it-yourself option and wrote a custom tool for the job [1]. After a lot of research on all the existing open-source frameworks we couldn't really find anything that would fit our use-case. We are quite happy with the result although, as the OP mentioned, there's a significant maintenance cost attached. As new features gets implemented and more API calls added you need to go back and make sure your user behaviour defining logic stays in sync with the real world.
If I were to do it all over again, I'd probably give k6 [2] a chance but I am still convinced a tailored solution was the best choice.