Today I read the first chapter of the zeromq guide and looked at the client-server and pub-sub examples! I love this paragraph from the preface (sounds so similar to Derek Sivers's CD Baby email!):
We took a normal TCP socket, injected it with a mix of radioactive isotopes stolen from a secret Soviet atomic research project, bombarded it with 1950-era cosmic rays, and put it into the hands of a drug-addled comic book author with a badly-disguised fetish for bulging muscles clad in spandex. Yes, ZeroMQ sockets are the world-saving superheroes of the networking world.
Sometime next week, I want to look closely into how Linux sockets work!
Today I also stripped down yesterday's little Jupyter console into an even littler Jupyter console, by looking at the jupyter_client code, and reusing some of that to make a stripped (a lot!) down version of the client.
At a high level, the code:
Starts the Python kernel
Instantiates a Cutypr object
Starts a REPL
Sends code for execution with client.execute(code)
Creates an execute_request message
Serializes it
Sends it to the shell socket
Gets the execution result with client.get_msg()
Polls the iopub socket
Gets a message from it
Deserializes it
Prints result!
This is the only example using which I'm testing if everything works for now:
In [1]: import os
In [2]: print(os.getcwd())
/home/vinayak/dev
In [3]:
Now I need to translate the Cutypr class to Rust, and also figure out a way to start the Python kernel from Rust!
To get some Rust writing practice, I'm also thinking about creating a curlyboi version of Julia Evans's snake.rs game. As a first step, I converted the usage of ncurses code to the ncursesw code so that I can get those ▛s in later.
I also made some changes to the pdftopngsetup.py and GitHub Actions workflow to start building 32-bit Windows wheels! I've pushed the Python 3.8 Windows wheels (both 32 and 64-bit) to PyPI so if you use Windows, please help me test if pdftopng works there by installing pdftopng and running the example in the README :)