430 karma · joined February 12, 2020
Plabayo: https://plabayo.tech developer of: https://ramaproxy.org/ (commercial: https://ramaproxy.com)
My personal time goes mostly to my family (in all its aspects), my endeavours in FOSS and studies in both languages and mathematics.
At least in Belgium there’s also a lot of unregistered solar panels to the point that the energy regulator is using satellite imagery to catch and find them…
When you mention tower you might mean two things:
1. the `Service` and `Layer` concept. That is in the end just a "tool" to provide composition. Just like you also use records (`structs`), procedures (functions) etc... We also lean on that concept. And also note that Tower did not invent that concept either. So in that sense Rama is just another child down the lane of this lineage.
2. The tower ecosystem. Rama can bridge into it, but it's true that we are not itself part of it. Six years ago Rama was still built directly with Tower. Later we created `tower-async`, and eventually we went our own road. This because it was clear at that point (and still is) that the tower ecosystem is not really gonna change any time soon despite rust having evolved a lot since its initial conception.
So if you like the concept of Tower, with its services and how it allows you to compose than you will also like Rama. That's however kinda where the comparison ends. Rama is a protocol agnostic network framework to build clients, servers and proxies. That is not what Tower is or its goal. Tower its only goal is provide an impl of the concept of "services". Rama uses that same concept, but its just one of many ways how we allow composition and is in a way just one of the concepts that make it so nice to build network services / network stacks.
Now different than what you might be used to in tower, is that in rama the service concept is everywhere (https://ramaproxy.org/book/intro/services_all_the_way_down.h...). You might also like to read https://plabayo.tech/blog/rama-101-2-core-concepts. With rama your services go through the different OSI layers, and easier to use and implement.
Rama is there as the foundation to build network services. Tower is there to provide you with a way to impl the concept of Services. Tower is also a ecosystem and we keep a very close eye on it. I suggest you explore Rama a bit for yourself. A lot more will be clear to you than whatever I might say here.
You can learn more about our project name origin at https://ramaproxy.org/book/faq.html#why-the-name-rama
I hope as you learn more about our project that you get excited once again! :)
Earlier this week we released Rama 0.4, and with it we are bringing system configured proxy support to clients (rama-net), this includes PAC support (rama-pac) driven by Javascript within a WASM runtime (rama-js). It also expands our gRPC support and adds support for ttRPC, a lightweight alternative to gRPC running directly on top of TCP.
Read more in the blog post and discover also the other new features and improvements that Rama brings in this new release, that is 0.4.
As always we are very much open to feedback on this Release, rama itself or how it is presented. It's a project 6 in the making, with everything written for production purposes since day 0. Feedback is always greatly appreciated especially if it allows us to improve Rama. Contributions welcome of course as well.
Just like websites also give zero fcks about accept-language header... sure do geoip lookup, so much easier... not
Large projects build with rama use it as well. But those are proprietary from partners so sadly cannot share those.
No clue how an AI would write it, but that is sadly how I write, sentences that are perhaps ending a bit too... late. I like my comma's and my em dashes... always have... Used to blog a lot more, trying to pick it up again, with this blog article being hopefully the first of many more to come.
And yeah mostly want to highlight the fact that is ready for production because sometimes people are worried for < 1.0 projects, but want to make sure that people know that we and plenty of other companies are already using it in production for serious projects, not just a hobby or R&D thing.
Our aim is to solve a real world problem with this, so that we can all stop reinventing the same duct-tape mess and instead have a shared foundation that we can all build upon. Such that if there is something to improve or a mistake it has to be fixed once and all rama users benefit from it. While still ahving the flexibility to use and stack your different services however you wish.
Here is some context and info about the framework that I am quoting from our README to provide you with context:
Rama is a modular service framework for the Rust (programming) language.
The framework is intentionally explicit. Your network stack is built from services, layers, transports, protocols, and state that you compose yourself. That makes the shape of the system visible in the code, instead of hidden behind framework magic or configuration.
This makes Rama a good fit not only for proxies, but for network services where the stack itself matters: how traffic enters, how it is decoded, where state lives, what gets inspected, what gets transformed, and where it goes next.
Whether you're inspecting traffic for security analysis, writing a web service, emulating clients with custom user agents, controlling connection behavior for advanced testing, or building high-performance proxies, Rama provides a clean and composable Tokio-native foundation for network services in Rust.
Rama is used in production for network security, data extraction, API gateways, routing, and other networked systems.
The second nicest thing with Elm is the philosophy of if it compiles it works. And to be honest you can get that same feeling with most of Rust as well. Sadly not as much of a haskell feeling but at least it has a warm shadow of some of its functional ancestors.
Companies love to cut costs, and just like they axe employee numbers at will, they will just as well make that kind of budget quickly dissapear the moment they realize they can go a different path for same or better value... Or simply because share holder short-term value demands it...
It's not that the utility of it put in question. What is however a giant question mark is how the heck any of the big AI companies are ever gonna get that ROI? Given how many of us are becoming more and more fine with local models that run just fine especially on a good enough computer which most developers have anyway...
Asking as I'm the host of netstack.fm, a podcast about networking and rust, but some episodes are just about networking alone.
Would love to devote an episode to the Kali TCP/IP IPX bridge as there's a lot to unpack there and that can be learned from. Any tips for a guest for such an episode are more than welcome!
But sometimes you have people that do seem to really do put in the time and do their best, and I suspect that without LLM they couldn't do what they can now do.
It's those cases that I find less clear cut. Like how to politely ask them to have certain criteria before they submit.
Languages like Rust don’t solve all problems and nobody is hoping that the research and progress towards better tooling stops there. Even many people working on Rust give plenty of ideas on what future languages can do better or different.
You don’t need to wait 20 years, those discussions are already happening…
So uh… I’m confused on what exactly you are trying to communicate here?
Not an expert though, but isn’t that behaviour inherent to how it works? Bit of a misnomer and giving people the wrong idea of what is going on here.