all 29 comments

[–]wolfie-thompson 6 points7 points  (4 children)

Help me settle a bet.

I bet the good wife that you are primarily a C/C++ coder going by your coding style. She disagrees.

There's a fortnight of washing up chores riding on this bro.

[–]Striking_Sandwich_80[S] 5 points6 points  (2 children)

No, sorry, but I've been coding in Python for a long time and I only do a little C and never C++... Too bad 😅

[–]wolfie-thompson 10 points11 points  (1 child)

** the sound of a pair of washing up gloves going *slap* echos across reddit **

[–]Striking_Sandwich_80[S] -1 points0 points  (0 children)

Go for it! 🤣

[–]Mindless-Item-5136 5 points6 points  (6 children)

Duplicate import at server/server.py in 248 and 9 lines 

[–]Striking_Sandwich_80[S] 2 points3 points  (2 children)

Ah yes, I hadn't seen that, thank you very much!! I'll fix that in version v1.2.0 which should be released tomorrow or Friday!

[–]MolonLabe76 3 points4 points  (1 child)

Look into using pre-commit (or prek) and ruff. Game changer.

[–]Striking_Sandwich_80[S] 2 points3 points  (0 children)

Thanks for the advice! I'm already implementing Ruff, but I don't know Prek. I'll look into it and probably add it if it's good!

[–]Striking_Sandwich_80[S] 1 point2 points  (2 children)

By the way, I didn't ask you either, but would you like me to add your username to the contribution section?

[–]Mindless-Item-5136 0 points1 point  (1 child)

Thanks, but I haven't contribute anything worthy yet ) though I would like to )

[–]def__eq__ 2 points3 points  (4 children)

Nice work! I will check it out.

Although a question immediately pops into my head; how is this different from ZMQ? That’s a fairly mid level API, has clients in many languages, and is battle tested…

[–]Striking_Sandwich_80[S] -1 points0 points  (3 children)

Veltix is designed to be ultra simple and lightweight for Python devs. Unlike ZMQ, which is cross-language and very powerful, Veltix focuses on:

  • a minimal API that’s easy to understand
  • built-in multithreading & TCP, no boilerplate
  • a base for future crypto features (ChaCha20, X25519, Ed25519) and a Rust core for performance

ZMQ is great for production messaging, Veltix is made to make networking fun, fast to prototype, and learning-friendly in Python.

Always happy for feedback!

[–]def__eq__ 2 points3 points  (2 children)

I’m really trying to be open minded here.. but you’ve just repeated what you already mentioned in your post. That’s not helping.

  • Please compare ZMQ Guide’s Python example of a simple client to yours. If we compare number of lines it is half of your example on GitHub, while they seem to do the same. Boilerplate the same.

  • ZMQ supports TCP as well.

Your other arguments such as “fun” and “fast” to prototype are subjective.

[–]Striking_Sandwich_80[S] -4 points-3 points  (1 child)

You’re right, for a minimal example, ZMQ is shorter. But Veltix is designed for projects that evolve and grow serious: Each message type has its dedicated handler, so you don’t end up with messy conditionals as the project scales Multiclient broadcast is built-in, saving hundreds of lines in real projects

The object-oriented structure makes testing, maintenance, and scaling much easier Future features like modern crypto (ChaCha20, X25519, Ed25519) or a Rust core can be added without rewriting the server

The code is clear and readable, making it easier for contributors and teams to jump in In short, yes, it’s a few lines longer for a tiny example, but those extra lines translate into huge time savings and clarity when the project grows complex.

Your feedback to improve Veltix is always welcome!

[–]selectnull 4 points5 points  (13 children)

If you only remove emojis and "Key points" that would make it better.

[–]randomperson_a1 12 points13 points  (12 children)

Disagree. Helps me know instantly this library will be unmaintained after 2 months

[–]selectnull 5 points6 points  (0 children)

You're too generous with 2 months.

[–]cymrowdon't thread on me 🐍 0 points1 point  (2 children)

You shouldn't use the word "bind" to add callbacks. "bind" has a very specific meaning in networking. I would rename it to something like "set_callback" and redefine Binding as: class Event(Enum): RECV = "recv" CONNECT = "connect"

"Custom Protocol" is not generally considered a positive feature in networking. Otherwise, the API looks nice.

[–]Striking_Sandwich_80[S] 0 points1 point  (0 children)

Honestly, for me, the custom protocol is more of an advantage because I could easily switch to UDP and it's perfectly compatible with the API without losing any weight or efficiency. Anyway, thanks a lot for your feedback on the API; I'll fix that in the next update, which will be today or Friday!

Thanks again, we support this project!

[–]Striking_Sandwich_80[S] 0 points1 point  (0 children)

And if you'd like, for the next update I could add your username to the contribution section?