Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation issues #55

Open
rolandrgarceau opened this issue Sep 17, 2019 · 2 comments
Open

Documentation issues #55

rolandrgarceau opened this issue Sep 17, 2019 · 2 comments

Comments

@rolandrgarceau
Copy link

From https://github.com/zeromq/zeromq.org the wording is a little unclear about how to begin to contribute. I am simply looking to recreate what is there locally on my machine and to understand how to begin using ZeroMQ period. I did a git clone --depth=1 https://github.com/imatix/zguide.git and started thumbing through .txt files in a VSCode instance. I realized that I should have a means to view these, so I attempted a command-o in chrome.

Then I realized I need to make a server and run it locally. Pressed for time is no way to try and understand how to best read this, granted, but I am. I have a CS degree and understand C (I'm no guru by any means) so I really appreciated the fact that the documentation uses it. I have been learning a few other languages (mainly concepts that tie them all together, really), found Jupyter Notebooks uses ZeroMQ and solves the #1 issue in my mind for YEARS- use any language any time, and communicate between languages easily (from your docs and my head) including crawling over mounds of documentation to get there. If anyone could assist I could use help figuring out the best way to separate out a few tasks:

  1. What is the "main" document to read that I may also start creating a hello world with?
  2. Strategy to move from C to say Python then C++. I have been studying wxpython a little and want to make some diagnostics for system administrators that can be placed on a bus to communicate to any app in any language. Mainly for viewing custom metrics like elb cpu consumption in real time, etc. Just a better HTOP and one that I made, that others can easily replicate. It may be that the previous system adminstrator wrote a bunch of scripts in python and now one may be faced with the task of picking up where they left off... who knows.

Obviously this means knowing Linux Containers on an intimate level, so I spent some time digging through Docker and how that may help me tie all this overwhelming piles of hello worlds into something cohesive is still revealing itself daily. I am fortunate to have been able to dedicate blocks of time to this, which I may not be able to afford in the coming weeks, so a strategy to learn this and document it for others on my team is utmost the reason why I am reaching out here.

  1. Help educate educators on bringing these concepts into their world (from a system admin at a University perspective).

I hope someone may see this and point me in a little clearer spot. I think a good option is to start with a local node server (I'm guessing) to replicate the zeromq.org website and be able to jump around the documentation easy), then if I get that running will look into creating a mockup app(s) with docker (bunch of one offs on a custom bridge and use docker compose to bring it up ?). I guess another good thing to get ahold of here is:

  1. Is there images I can pull for docker containers to start with- or a template that has enough commenting that I can realize where the caching is taking place and how I can build a few pieces one step at a time.

Maybe the best thing is not to try and build anything at first and just read the docs, but for me I think it works best to read and build small pieces as I go. Maybe someones suggestion might be- you're not ready. Maybe they are right. I want a narrowed shot at it though if I do decide to dive down this rabbit hole. I saw a JupyterCon video that connected JS and Python for graphical representations of brain activity in 3-D that really pushed me down the avenue of researching what it is you all are attempting to solve, and I think 9 months of my own squirrel chasing an acorn mentality has landed me here. Please help me iron this out. I know it's inevitability we are faced with here, its just a matter of time. Thanks ahead of it for yours.

P.S. I have Kerrisk's book currently sitting next to my MBP, and any points into this other than reading the whole thing and remembering it all over again will be great. Thanks again.

Rudy

@sappo
Copy link
Member

sappo commented Sep 17, 2019

Hi @rolandrgarceau,
thanks for your comprehensive message. I'll try to address your points:

  1. There are currently two main resources zeromq.org and zguide.zeromq.org:
    My vision is that zeromq.org contains a getting started including a couple of hello world examples that get new users started quickly in any language with examples of the library they like to use. Currently there are two pages messages and socket api that explain the main concepts behind ZeroMQ and provide examples. I'd like to extend those with more examples for more libraries. Currently there are examples for libzmq, czmq, NetMQ and JeroMQ.
    The zguide provides a deep dive into ZeroMQ and extends on what users learned on zeromq.org. I'd like to migrate the zguide to hugo as well as it is more flexible than the current wikidot solution.

  2. Correct me if I'm wrong but this is about protocols. If you like to exchange data between languages you need something like protobuf, msgpack or ZeroMQs own zproto. It will be the next chapter/page I'd like to write on/for zeromq.org.

  3. Sorry, I'm not sure what you mean here? Which concept exactly?

  4. I'm personally not aware of any Docker Images but having a documentation on a platform like https://www.katacoda.com/ would make sense to me. The piece by piece documentation you're looking for is the zguide ;)

Hopefully I addressed all of your concerns, if not feel free to point them out again.

Cheers
//Kevin

@rolandrgarceau
Copy link
Author

Kevin,

Thank you soooo much. This makes it much clearer for me to design a vector of attack for ingesting the concepts and code outlined here with how I may apply this currently working cross-language solution to a simple user interface that may display instance or cpu/motherboard metrics on yes, some sort of bus that I have not drilled down yet. I believe this may be another part of the puzzle to solve- to choose the Linux distro to work with. A few may have dbus or something similar.

I shot out there Docker Compose and build the network construct from scratch, but we still need the connectivity of the containers running my proposed UI to be interoperable with things like Jupyter Notebooks so one may run code chunks in the notebook and have the custom UI open to display info on the processor that may be delegated to handle its set of tasks or processes. The big clencher here is to not only be able to see these diagnostics, but to be able to send messages across from the notebook to that UI, and or to be able to issue commands on the bus(es) in question to eventually be able to influence a scheduler sitting in the mix too.

I have come across a few options with this, but am looking to go down the avenue with incorporating Rust/Tokio/Actix/ and maybe Redis (can someone help offer some suggestions for a cache/no-db or what not solution) I'm curious to know if anyone has laid out a custom image that they would be willing to describe the basic working parts, and the source that can be built with a Posix/BSD machines cmake/clang and with the traditional cc/gcc tooling. This will assure that we can describe to students the process from either their MBP or their latest and greatest Linux virtual machine.

My intent for #3 was to create a simple UI with Wxpython (I have my environment working the basics for this oneon a MBP- Kivy is close too for Android but I haver a few kinks to iron out there), or Tkinter or whatever quick Python backed app framework- maybe again someone may point me to something they have already encountered here. To be able to do this for educational purposes with well documented steps and layout a modern, repeatable solution for some hackathon-like projects the STEM program can make use of at my Alma Mater, and to help ease the process of transitioning traditional system administration practices and solutions into the modern world of traces everywhere, configuration hell simplifications (I finally opted to rely on conda for my own sanity), and the general connectivity of any program in any language on any bus kinda mentality. I wish to try to simplify the next wave of gurus headaches, and allow them to take it to the next level (my nine year old is an aspiring video game creator).

I know this is a tall order task, but for the sake of pushing education to the next level for our children it is something I have been diligently attempting to understand myself in order to create something like zmq has descried as "easily communicated". Thanks again ahead of time for anyone that reads this and may suggest ways to keep this research on track. The thing I have to be able to transition in this process is less amount of long blocks of time I can dedicate to moving towards a working solution is going to be the most challenging for me, as I finally ran out time as a resource. Either that or contact me directly with a "job" opportunity, because this is really about life, not just learning or work.

Kind Regards,

Rudy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants