Hi Anatoly,
Do you know about manhole? I made a video that also demos axiom, but it should show you what manhole does :) https://www.youtube.com/watch?v=3-UZiO-AnLc Essentially it's "repl in a running process". hth lvh On Mon, May 5, 2014 at 4:43 AM, anatoly techtonik <techto...@gmail.com>wrote: > Hello, network hackers, > > Recently I've got a Raspberry Pi and a friend showed me its serial > interface and helped to setup it. I was stunned. What I saw - you open > serial terminal, and you jump in into the middle of boot section. Just > open a terminal and you see what's going on inside of R.Pi. Any time. > That's was an intro. =) > > For a long time I wanted the same interface for debugging software > programs. When I was hacking on Spyder I found that my human brain is > too limited to squeeze details of dynamic of interaction of objects at > run-time. Spyder is written in Python with Qt, and it is a parallel > application much like any Twisted app is. But I wanted to push the > progress, I have to deal with complexity, so I badly needed to be able > to draw a video of interaction at run-time. That was the problem I > tried to solve. > > And for the first step I needed a way to connect to Spyder at run-time > and see what's going on. I didn't know how to call that way before, > but now I have a rather accurate wording - "a serial interface for an > application". That is the background for the question I am trying to > ask. > > What is the best way to implement such interface considering the > following properties: > 1. it needs to be simple (so that you can quickly create python script > that reads the info) > 2. it needs to be universal (so that script for one app worked for other) > 3. it should be asynchronous (connected terminal should not degrade > performance) > 4. it needs to be reliable (at least detecting missing packets) > 5. and cross-platform (and pure python) > > Why Twisted? For the first I think that this problem is actual for > people who are dealing with complexity of dynamic and interconnected > systems built with the help of Twisted. For the second I believe it > can only be solved or analyzed by people skilled in interprocess and > internetwork communications. > > One button test: > 1. program behaves weird > 2. user hits the button > 3. terminal pops up > 4. shows a lot of data for a running program > > I am interested to know. > 1. how the button should discover the program > network port seems cool, but what about two parallel programs? what > about different programs that provide this interface? > > 2. how terminal receives the data > i see it as line based - one line - one event, everything is text > > 3. how to make it fast > TCP clearly won't here > > 4. how to send the data > what if two threads (or parallel code) produce serial data? who should > run the server that serves connected terminals, and how other thread > will send message to this server? you can not run two TCP servers on > the same port on the app side, so is there an alternative? how to > detect missing data in a stream? how to avoid dealing with incomplete > packets and low level network details? > > Thanks. I'd like to get back to hacking on Spyder one day, but this is > a stumbling block for me every time I think about it or any program of > compared complexity. > -- > anatoly t. > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python