When Google Sneezes, the Whole World Catches a Cold | Forge Code
https://www.reddit.com/r/programming/comments/1la5u5j/when_google_sneezes_the_whole_world_catches_a/
<!-- SC_OFF -->Today's Google Cloud IAM outage cascaded through major platforms including Cloudflare, Anthropic, Spotify, Discord, and Replit, highlighting key reliability issues. Here's what happened, how it affected popular services, and key takeaways for developers aiming for more resilient architecture. TL;DR: Google Cloud outage took down Cloudflare, Anthropic (Claude APIs), Spotify, Discord, and many others. Key lesson: don't put all your eggs in one basket, graceful fallback patterns matter! <!-- SC_ON --> submitted by /u/West-Chocolate2977 (https://www.reddit.com/user/West-Chocolate2977)
[link] (https://forgecode.dev/blog/gcp-cloudflare-anthropic-outage/) [comments] (https://www.reddit.com/r/programming/comments/1la5u5j/when_google_sneezes_the_whole_world_catches_a/)
https://www.reddit.com/r/programming/comments/1la5u5j/when_google_sneezes_the_whole_world_catches_a/
<!-- SC_OFF -->Today's Google Cloud IAM outage cascaded through major platforms including Cloudflare, Anthropic, Spotify, Discord, and Replit, highlighting key reliability issues. Here's what happened, how it affected popular services, and key takeaways for developers aiming for more resilient architecture. TL;DR: Google Cloud outage took down Cloudflare, Anthropic (Claude APIs), Spotify, Discord, and many others. Key lesson: don't put all your eggs in one basket, graceful fallback patterns matter! <!-- SC_ON --> submitted by /u/West-Chocolate2977 (https://www.reddit.com/user/West-Chocolate2977)
[link] (https://forgecode.dev/blog/gcp-cloudflare-anthropic-outage/) [comments] (https://www.reddit.com/r/programming/comments/1la5u5j/when_google_sneezes_the_whole_world_catches_a/)
Mastering CRUD Operations with Knex.js and PostgreSQL
https://www.reddit.com/r/programming/comments/1la77oe/mastering_crud_operations_with_knexjs_and/
<!-- SC_OFF -->Knex.js is a powerful, open-source SQL query builder for Node.js that simplifies database interactions by allowing developers to write database queries using JavaScript. In this article, we'll explore how to perform CRUD (Create, Read, Update, Delete) and various other operations using Knex.js with a PostgreSQL database. <!-- SC_ON --> submitted by /u/ram-foss (https://www.reddit.com/user/ram-foss)
[link] (https://www.blackslate.io/articles/mastering-crud-operations-with-knex-js-and-postgresql) [comments] (https://www.reddit.com/r/programming/comments/1la77oe/mastering_crud_operations_with_knexjs_and/)
https://www.reddit.com/r/programming/comments/1la77oe/mastering_crud_operations_with_knexjs_and/
<!-- SC_OFF -->Knex.js is a powerful, open-source SQL query builder for Node.js that simplifies database interactions by allowing developers to write database queries using JavaScript. In this article, we'll explore how to perform CRUD (Create, Read, Update, Delete) and various other operations using Knex.js with a PostgreSQL database. <!-- SC_ON --> submitted by /u/ram-foss (https://www.reddit.com/user/ram-foss)
[link] (https://www.blackslate.io/articles/mastering-crud-operations-with-knex-js-and-postgresql) [comments] (https://www.reddit.com/r/programming/comments/1la77oe/mastering_crud_operations_with_knexjs_and/)
Mochi v0.7.0 — Go+Python interop, self-eval, and agent streams
https://www.reddit.com/r/programming/comments/1la7m84/mochi_v070_gopython_interop_selfeval_and_agent/
<!-- SC_OFF -->We just released Mochi v0.7.0 (https://github.com/tamnd/mochi), a small statically typed scripting language for agents, real-time data, and working alongside Go, Python, and TypeScript. This update brings a few solid improvements: Agent messaging
Agents now have stream-backed mailboxes. You can send and wait with deterministic ordering — useful for simulations, coordination, or async systems. Go and Python in the same file
You can now call Go and Python together. Go FFI supports structs and method calls: import go "strings" as strings auto import python "math" as math let name = strings.ToUpper("alice") let area = math.pi * math.pow(3.0, 2.0) Dynamic eval
You can now evaluate Mochi code at runtime — including code generated on the fly: let code = generate text { prompt: "Write mochi code to calculate 2+2?" } let result = eval(code) print(result) // 4 Local imports
You can import files and folders using ./ and ../, no registry required. Still early, but if you're into lightweight scripting, cross-language interop, or agent-based workflows, it might be worth a look.
We’d love feedback — https://github.com/mochilang/mochi (https://github.com/tamnd/mochi) <!-- SC_ON --> submitted by /u/Adept-Country4317 (https://www.reddit.com/user/Adept-Country4317)
[link] (https://github.com/mochilang/mochi/releases/tag/v0.7.0) [comments] (https://www.reddit.com/r/programming/comments/1la7m84/mochi_v070_gopython_interop_selfeval_and_agent/)
https://www.reddit.com/r/programming/comments/1la7m84/mochi_v070_gopython_interop_selfeval_and_agent/
<!-- SC_OFF -->We just released Mochi v0.7.0 (https://github.com/tamnd/mochi), a small statically typed scripting language for agents, real-time data, and working alongside Go, Python, and TypeScript. This update brings a few solid improvements: Agent messaging
Agents now have stream-backed mailboxes. You can send and wait with deterministic ordering — useful for simulations, coordination, or async systems. Go and Python in the same file
You can now call Go and Python together. Go FFI supports structs and method calls: import go "strings" as strings auto import python "math" as math let name = strings.ToUpper("alice") let area = math.pi * math.pow(3.0, 2.0) Dynamic eval
You can now evaluate Mochi code at runtime — including code generated on the fly: let code = generate text { prompt: "Write mochi code to calculate 2+2?" } let result = eval(code) print(result) // 4 Local imports
You can import files and folders using ./ and ../, no registry required. Still early, but if you're into lightweight scripting, cross-language interop, or agent-based workflows, it might be worth a look.
We’d love feedback — https://github.com/mochilang/mochi (https://github.com/tamnd/mochi) <!-- SC_ON --> submitted by /u/Adept-Country4317 (https://www.reddit.com/user/Adept-Country4317)
[link] (https://github.com/mochilang/mochi/releases/tag/v0.7.0) [comments] (https://www.reddit.com/r/programming/comments/1la7m84/mochi_v070_gopython_interop_selfeval_and_agent/)
Why Discord Moved Away from Redis and Rebuilt Search on Kubernetes
https://www.reddit.com/r/programming/comments/1la7siw/why_discord_moved_away_from_redis_and_rebuilt/
submitted by /u/Soul_Predator (https://www.reddit.com/user/Soul_Predator)
[link] (https://analyticsindiamag.com/ai-features/why-discord-moved-away-from-redis-and-rebuilt-search-on-kubernetes/) [comments] (https://www.reddit.com/r/programming/comments/1la7siw/why_discord_moved_away_from_redis_and_rebuilt/)
https://www.reddit.com/r/programming/comments/1la7siw/why_discord_moved_away_from_redis_and_rebuilt/
submitted by /u/Soul_Predator (https://www.reddit.com/user/Soul_Predator)
[link] (https://analyticsindiamag.com/ai-features/why-discord-moved-away-from-redis-and-rebuilt-search-on-kubernetes/) [comments] (https://www.reddit.com/r/programming/comments/1la7siw/why_discord_moved_away_from_redis_and_rebuilt/)
jemalloc Postmortem
https://www.reddit.com/r/programming/comments/1la9anf/jemalloc_postmortem/
submitted by /u/mttd (https://www.reddit.com/user/mttd)
[link] (https://jasone.github.io/2025/06/12/jemalloc-postmortem/) [comments] (https://www.reddit.com/r/programming/comments/1la9anf/jemalloc_postmortem/)
https://www.reddit.com/r/programming/comments/1la9anf/jemalloc_postmortem/
submitted by /u/mttd (https://www.reddit.com/user/mttd)
[link] (https://jasone.github.io/2025/06/12/jemalloc-postmortem/) [comments] (https://www.reddit.com/r/programming/comments/1la9anf/jemalloc_postmortem/)
Developer patterns and practices as a mood stabiliser for hypomanic AI
https://www.reddit.com/r/programming/comments/1laa92i/developer_patterns_and_practices_as_a_mood/
<!-- SC_OFF -->(I can maybe use this insensitive title as I have bipolar disorder). My AI is often like a super psyched junior developer, I ask for a new command line flag and it creates a monster changes, tonnes of comments saying all the clever stuff it’s done, doesn’t clean up old code, doesn’t think about testing, doesn’t follow obvious conventions. More code = more maintenance and tech debt, smaller is better. Don’t change without discussion. Review changes. I encoded this in “golden rules” in a developer guide, which can be used with a simple prompt (if your LLM has web access) or an MCP server (more efficient for fetching “sub guides”. I’d love feedback on the approach or any suggestions of the best next additions. I’m focusing on basic idioms for good practices, rather than specifics that are more opinionated. But it’s early days work in progress. <!-- SC_ON --> submitted by /u/dwmkerr (https://www.reddit.com/user/dwmkerr)
[link] (https://github.com/dwmkerr/ai-developer-guide) [comments] (https://www.reddit.com/r/programming/comments/1laa92i/developer_patterns_and_practices_as_a_mood/)
https://www.reddit.com/r/programming/comments/1laa92i/developer_patterns_and_practices_as_a_mood/
<!-- SC_OFF -->(I can maybe use this insensitive title as I have bipolar disorder). My AI is often like a super psyched junior developer, I ask for a new command line flag and it creates a monster changes, tonnes of comments saying all the clever stuff it’s done, doesn’t clean up old code, doesn’t think about testing, doesn’t follow obvious conventions. More code = more maintenance and tech debt, smaller is better. Don’t change without discussion. Review changes. I encoded this in “golden rules” in a developer guide, which can be used with a simple prompt (if your LLM has web access) or an MCP server (more efficient for fetching “sub guides”. I’d love feedback on the approach or any suggestions of the best next additions. I’m focusing on basic idioms for good practices, rather than specifics that are more opinionated. But it’s early days work in progress. <!-- SC_ON --> submitted by /u/dwmkerr (https://www.reddit.com/user/dwmkerr)
[link] (https://github.com/dwmkerr/ai-developer-guide) [comments] (https://www.reddit.com/r/programming/comments/1laa92i/developer_patterns_and_practices_as_a_mood/)
AI Generated Books
https://www.reddit.com/r/programming/comments/1laayqu/ai_generated_books/
<!-- SC_OFF -->If you're looking for good books on programming, please avoid this author. The content is clearly AI generated, and created simply to farm purchases from those who don't know any better. Pick any of the books and just read the sample. It's barely readable. I'm worried that people who are looking and don't know any better will buy them. Just posting here to spread awareness. <!-- SC_ON --> submitted by /u/ctrtanc (https://www.reddit.com/user/ctrtanc)
[link] (https://www.amazon.com/s?i=digital-text&rh=p_27%3AMaxwell%2BVector) [comments] (https://www.reddit.com/r/programming/comments/1laayqu/ai_generated_books/)
https://www.reddit.com/r/programming/comments/1laayqu/ai_generated_books/
<!-- SC_OFF -->If you're looking for good books on programming, please avoid this author. The content is clearly AI generated, and created simply to farm purchases from those who don't know any better. Pick any of the books and just read the sample. It's barely readable. I'm worried that people who are looking and don't know any better will buy them. Just posting here to spread awareness. <!-- SC_ON --> submitted by /u/ctrtanc (https://www.reddit.com/user/ctrtanc)
[link] (https://www.amazon.com/s?i=digital-text&rh=p_27%3AMaxwell%2BVector) [comments] (https://www.reddit.com/r/programming/comments/1laayqu/ai_generated_books/)
Breaking down ‘EchoLeak’, the First Zero-Click AI Vulnerability Enabling Data Exfiltration from Microsoft 365 Copilot
https://www.reddit.com/r/programming/comments/1ladzj1/breaking_down_echoleak_the_first_zeroclick_ai/
submitted by /u/mgrier123 (https://www.reddit.com/user/mgrier123)
[link] (https://www.aim.security/lp/aim-labs-echoleak-blogpost) [comments] (https://www.reddit.com/r/programming/comments/1ladzj1/breaking_down_echoleak_the_first_zeroclick_ai/)
https://www.reddit.com/r/programming/comments/1ladzj1/breaking_down_echoleak_the_first_zeroclick_ai/
submitted by /u/mgrier123 (https://www.reddit.com/user/mgrier123)
[link] (https://www.aim.security/lp/aim-labs-echoleak-blogpost) [comments] (https://www.reddit.com/r/programming/comments/1ladzj1/breaking_down_echoleak_the_first_zeroclick_ai/)
Dr. Cat Hicks on Why Developers Feel Anxious At Work
https://www.reddit.com/r/programming/comments/1laernq/dr_cat_hicks_on_why_developers_feel_anxious_at/
submitted by /u/shift_devs (https://www.reddit.com/user/shift_devs)
[link] (https://shiftmag.dev/dr-cat-hicks-software-teams-psychology-5357/) [comments] (https://www.reddit.com/r/programming/comments/1laernq/dr_cat_hicks_on_why_developers_feel_anxious_at/)
https://www.reddit.com/r/programming/comments/1laernq/dr_cat_hicks_on_why_developers_feel_anxious_at/
submitted by /u/shift_devs (https://www.reddit.com/user/shift_devs)
[link] (https://shiftmag.dev/dr-cat-hicks-software-teams-psychology-5357/) [comments] (https://www.reddit.com/r/programming/comments/1laernq/dr_cat_hicks_on_why_developers_feel_anxious_at/)
Tidy First? A Daily Exercise in Empirical Design • Kent Beck
https://www.reddit.com/r/programming/comments/1lafn6f/tidy_first_a_daily_exercise_in_empirical_design/
submitted by /u/goto-con (https://www.reddit.com/user/goto-con)
[link] (https://youtu.be/SLqSUHFxBoE?list=PLEx5khR4g7PLyzqZrgBcAju-QEInTN77m) [comments] (https://www.reddit.com/r/programming/comments/1lafn6f/tidy_first_a_daily_exercise_in_empirical_design/)
https://www.reddit.com/r/programming/comments/1lafn6f/tidy_first_a_daily_exercise_in_empirical_design/
submitted by /u/goto-con (https://www.reddit.com/user/goto-con)
[link] (https://youtu.be/SLqSUHFxBoE?list=PLEx5khR4g7PLyzqZrgBcAju-QEInTN77m) [comments] (https://www.reddit.com/r/programming/comments/1lafn6f/tidy_first_a_daily_exercise_in_empirical_design/)
Why we don't do leetcode style interviews
https://www.reddit.com/r/programming/comments/1lagt6w/why_we_dont_do_leetcode_style_interviews/
submitted by /u/ProteanLabsJohn (https://www.reddit.com/user/ProteanLabsJohn)
[link] (https://protean-labs.io/blog/why-we-dont-do-leetcode-style-technical-interviews) [comments] (https://www.reddit.com/r/programming/comments/1lagt6w/why_we_dont_do_leetcode_style_interviews/)
https://www.reddit.com/r/programming/comments/1lagt6w/why_we_dont_do_leetcode_style_interviews/
submitted by /u/ProteanLabsJohn (https://www.reddit.com/user/ProteanLabsJohn)
[link] (https://protean-labs.io/blog/why-we-dont-do-leetcode-style-technical-interviews) [comments] (https://www.reddit.com/r/programming/comments/1lagt6w/why_we_dont_do_leetcode_style_interviews/)
Building Web Apps from Scratch: HTTP Protocol Explained
https://www.reddit.com/r/programming/comments/1laixc9/building_web_apps_from_scratch_http_protocol/
submitted by /u/caromobiletiscrivo (https://www.reddit.com/user/caromobiletiscrivo)
[link] (https://coz.is/posts/004_http.html) [comments] (https://www.reddit.com/r/programming/comments/1laixc9/building_web_apps_from_scratch_http_protocol/)
https://www.reddit.com/r/programming/comments/1laixc9/building_web_apps_from_scratch_http_protocol/
submitted by /u/caromobiletiscrivo (https://www.reddit.com/user/caromobiletiscrivo)
[link] (https://coz.is/posts/004_http.html) [comments] (https://www.reddit.com/r/programming/comments/1laixc9/building_web_apps_from_scratch_http_protocol/)
OxCaml - OCaml, Oxidized
https://www.reddit.com/r/programming/comments/1lajpew/oxcaml_ocaml_oxidized/
submitted by /u/yawaramin (https://www.reddit.com/user/yawaramin)
[link] (https://oxcaml.org/) [comments] (https://www.reddit.com/r/programming/comments/1lajpew/oxcaml_ocaml_oxidized/)
https://www.reddit.com/r/programming/comments/1lajpew/oxcaml_ocaml_oxidized/
submitted by /u/yawaramin (https://www.reddit.com/user/yawaramin)
[link] (https://oxcaml.org/) [comments] (https://www.reddit.com/r/programming/comments/1lajpew/oxcaml_ocaml_oxidized/)
Rendering Crispy Text on the GPU
https://www.reddit.com/r/programming/comments/1lak6du/rendering_crispy_text_on_the_gpu/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://osor.io/text) [comments] (https://www.reddit.com/r/programming/comments/1lak6du/rendering_crispy_text_on_the_gpu/)
https://www.reddit.com/r/programming/comments/1lak6du/rendering_crispy_text_on_the_gpu/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://osor.io/text) [comments] (https://www.reddit.com/r/programming/comments/1lak6du/rendering_crispy_text_on_the_gpu/)
Asterinas: A Linux ABI-compatible, Rust-based framekernel OS
https://www.reddit.com/r/programming/comments/1lak7st/asterinas_a_linux_abicompatible_rustbased/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://asterinas.github.io/2025/06/04/kernel-memory-safety-mission-accomplished.html) [comments] (https://www.reddit.com/r/programming/comments/1lak7st/asterinas_a_linux_abicompatible_rustbased/)
https://www.reddit.com/r/programming/comments/1lak7st/asterinas_a_linux_abicompatible_rustbased/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://asterinas.github.io/2025/06/04/kernel-memory-safety-mission-accomplished.html) [comments] (https://www.reddit.com/r/programming/comments/1lak7st/asterinas_a_linux_abicompatible_rustbased/)
WebKit's Standards Positions
https://www.reddit.com/r/programming/comments/1laka1g/webkits_standards_positions/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://webkit.org/standards-positions/) [comments] (https://www.reddit.com/r/programming/comments/1laka1g/webkits_standards_positions/)
https://www.reddit.com/r/programming/comments/1laka1g/webkits_standards_positions/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://webkit.org/standards-positions/) [comments] (https://www.reddit.com/r/programming/comments/1laka1g/webkits_standards_positions/)
Quantum Computing without the Linear Algebra [pdf]
https://www.reddit.com/r/programming/comments/1lakaa5/quantum_computing_without_the_linear_algebra_pdf/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://eprint.iacr.org/2025/1091.pdf) [comments] (https://www.reddit.com/r/programming/comments/1lakaa5/quantum_computing_without_the_linear_algebra_pdf/)
https://www.reddit.com/r/programming/comments/1lakaa5/quantum_computing_without_the_linear_algebra_pdf/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://eprint.iacr.org/2025/1091.pdf) [comments] (https://www.reddit.com/r/programming/comments/1lakaa5/quantum_computing_without_the_linear_algebra_pdf/)
Everything Multiplayer
https://www.reddit.com/r/programming/comments/1lakl07/everything_multiplayer/
<!-- SC_OFF -->I spent the last year learning everything I could about multiplayer. I go from basic socket programming to complex state synchronization, to creating a backend. My goal was to create a mega resource for making multiplayer games. It's a very long and dense video, so feel free to watch at x2. This was a massive project for me, so I'm really happy to have finally finished it. I've been sharing it around to people, and have been having really good conversations with industry veterans from it. Is there anything I missed, or points you disagree with? <!-- SC_ON --> submitted by /u/No_Examination_2616 (https://www.reddit.com/user/No_Examination_2616)
[link] (https://youtu.be/fOfT5cqvOdI) [comments] (https://www.reddit.com/r/programming/comments/1lakl07/everything_multiplayer/)
https://www.reddit.com/r/programming/comments/1lakl07/everything_multiplayer/
<!-- SC_OFF -->I spent the last year learning everything I could about multiplayer. I go from basic socket programming to complex state synchronization, to creating a backend. My goal was to create a mega resource for making multiplayer games. It's a very long and dense video, so feel free to watch at x2. This was a massive project for me, so I'm really happy to have finally finished it. I've been sharing it around to people, and have been having really good conversations with industry veterans from it. Is there anything I missed, or points you disagree with? <!-- SC_ON --> submitted by /u/No_Examination_2616 (https://www.reddit.com/user/No_Examination_2616)
[link] (https://youtu.be/fOfT5cqvOdI) [comments] (https://www.reddit.com/r/programming/comments/1lakl07/everything_multiplayer/)
StarMalloc: verified memory allocator
https://www.reddit.com/r/programming/comments/1lal7h9/starmalloc_verified_memory_allocator/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://dl.acm.org/doi/10.1145/3689773) [comments] (https://www.reddit.com/r/programming/comments/1lal7h9/starmalloc_verified_memory_allocator/)
https://www.reddit.com/r/programming/comments/1lal7h9/starmalloc_verified_memory_allocator/
submitted by /u/ketralnis (https://www.reddit.com/user/ketralnis)
[link] (https://dl.acm.org/doi/10.1145/3689773) [comments] (https://www.reddit.com/r/programming/comments/1lal7h9/starmalloc_verified_memory_allocator/)
https://www.reddit.com/r/programming/comments/1lal8mp/centrifugo_the_gobased_opensource_realtime/
<!-- SC_OFF -->I’m part of a backend team at a fairly large organization (~10k employees), and I wanted to share a bit about how we ended up using Centrifugo for real-time messaging — and why we’re happy with it. We were building an internal messenger app for all the employees (sth like Slack), deeply integrated with our company's business nature and processes, and initially planned to use Django Channels (https://channels.readthedocs.io/en/latest/), since our stack is mostly Django-based. But after digging into the architecture and doing some early testing, it became clear that the performance characteristics just weren’t going to work for our needs. We even asked for advice in the Django subreddit (https://www.reddit.com/r/django/comments/1b7002m/building_a_messenger_app_for_a_large_organization/), and while the responses were helpful, the reality is that implementing real-time messaging at this scale with Django Channels felt impractical – complex and resource-heavy. One of our main challenges was that users needed to receive real-time updates from hundreds or even over a thousand chat rooms at once — all within a single screen. And obviously up to 10k users in each room. With Django Channels, maintaining a separate real-time channel per chat room didn’t scale, and we couldn’t find a way to build the kind of architecture we needed. Then we came across Centrifugo, and it turned out to be exactly what we were missing. Here’s what stood out for us specifically: Performance: With Centrifugo, we were able to implement the design we actually wanted — each user has a personal channel instead of managing channels per room. This made fan-out manageable and let us scale in a way that felt completely out of reach with Django Channels. WebSocket with SSE and HTTP-streaming fallbacks — all of which work without requiring sticky sessions. That was a big plus for keeping our infrastructure simple. It also supports unidirectional SSE/HTTP-streaming, so for simpler use cases, you can use Centrifugo without needing a client SDK, which is really convenient. Well-thought-out reconnect handling: In the case of mass reconnects (e.g., when a reverse proxy is reloaded), Centrifugo handles it gracefully. It uses JWT-based authentication, which is a great match for WebSocket connections. And it maintains a message cache in each channel, so clients can fetch missed messages without putting sudden load on our backend services when recovering the state. Redis integration is solid and effective, also supports modern alternatives like Valkey (to which we actually switched at some point), DragonflyDB, and it seems managed Redis like Elasticache offerings from AWS too. Exposes many useful metrics via Prometheus, which made monitoring and alerting much easier for us to set up. It’s language agnostic, since it runs as a separate service — so if we ever move away from Django in the future, or start a new project with other tech – we can keep using Centrifugo as a universal tool for sending WebSocket messages. We also evaluated tools like Mercure (https://mercure.rocks/), but some important for us features (e.g., scalability to many nodes) were only available in the enterprise version, so did not work for us. Finally, it looks like the project is maintained mostly by a single person — and honestly, the quality, performance, and completeness of it really shows how much effort has been put in. We’re posting this mainly to say thanks and hopefully bring more visibility to a tool that helped us a lot. We now in production for 6 months – and it works pretty well, mostly concentrating on business-specific features now. Here’s the project: 👉 https://github.com/centrifugal/centrifugo Hope this may be helpful to others facing real-time challenges. <!-- SC_ON --> submitted by /u/OriginalBaXX (https://www.reddit.com/user/OriginalBaXX)
<!-- SC_OFF -->I’m part of a backend team at a fairly large organization (~10k employees), and I wanted to share a bit about how we ended up using Centrifugo for real-time messaging — and why we’re happy with it. We were building an internal messenger app for all the employees (sth like Slack), deeply integrated with our company's business nature and processes, and initially planned to use Django Channels (https://channels.readthedocs.io/en/latest/), since our stack is mostly Django-based. But after digging into the architecture and doing some early testing, it became clear that the performance characteristics just weren’t going to work for our needs. We even asked for advice in the Django subreddit (https://www.reddit.com/r/django/comments/1b7002m/building_a_messenger_app_for_a_large_organization/), and while the responses were helpful, the reality is that implementing real-time messaging at this scale with Django Channels felt impractical – complex and resource-heavy. One of our main challenges was that users needed to receive real-time updates from hundreds or even over a thousand chat rooms at once — all within a single screen. And obviously up to 10k users in each room. With Django Channels, maintaining a separate real-time channel per chat room didn’t scale, and we couldn’t find a way to build the kind of architecture we needed. Then we came across Centrifugo, and it turned out to be exactly what we were missing. Here’s what stood out for us specifically: Performance: With Centrifugo, we were able to implement the design we actually wanted — each user has a personal channel instead of managing channels per room. This made fan-out manageable and let us scale in a way that felt completely out of reach with Django Channels. WebSocket with SSE and HTTP-streaming fallbacks — all of which work without requiring sticky sessions. That was a big plus for keeping our infrastructure simple. It also supports unidirectional SSE/HTTP-streaming, so for simpler use cases, you can use Centrifugo without needing a client SDK, which is really convenient. Well-thought-out reconnect handling: In the case of mass reconnects (e.g., when a reverse proxy is reloaded), Centrifugo handles it gracefully. It uses JWT-based authentication, which is a great match for WebSocket connections. And it maintains a message cache in each channel, so clients can fetch missed messages without putting sudden load on our backend services when recovering the state. Redis integration is solid and effective, also supports modern alternatives like Valkey (to which we actually switched at some point), DragonflyDB, and it seems managed Redis like Elasticache offerings from AWS too. Exposes many useful metrics via Prometheus, which made monitoring and alerting much easier for us to set up. It’s language agnostic, since it runs as a separate service — so if we ever move away from Django in the future, or start a new project with other tech – we can keep using Centrifugo as a universal tool for sending WebSocket messages. We also evaluated tools like Mercure (https://mercure.rocks/), but some important for us features (e.g., scalability to many nodes) were only available in the enterprise version, so did not work for us. Finally, it looks like the project is maintained mostly by a single person — and honestly, the quality, performance, and completeness of it really shows how much effort has been put in. We’re posting this mainly to say thanks and hopefully bring more visibility to a tool that helped us a lot. We now in production for 6 months – and it works pretty well, mostly concentrating on business-specific features now. Here’s the project: 👉 https://github.com/centrifugal/centrifugo Hope this may be helpful to others facing real-time challenges. <!-- SC_ON --> submitted by /u/OriginalBaXX (https://www.reddit.com/user/OriginalBaXX)