I made a debugger that draws the state machine of the program
i.imgur.com
i.imgur.com
EDSAC II had a speaker to help with debugging and this "feature" was also incorporated into versions of the LEO, the worlds first computer for business applications:
http://en.wikipedia.org/wiki/LEO_%28computer%29
I wonder if something similar could be created for the state machines in the article - giving each state it's own tone?
oh man that's such a good idea.
This makes "music" of a sort, especially when the program running does many things repetitiously. In the early days of computing, multiplication was implemented as repeated addition. Memory access also had a particular pattern of repetitive circuitry.
This provided a base repetition that humans recognize. When code was stuck in a loop, or repeatedly accessed the same range of memory locations, the operators could hear the pattern and know something was wrong.
So on the screen you could sort of see the BASIC stack, other important system variables, and even a squashed representation of the text console. So when it was sitting idle you'd see one kind of pattern, and running programs produced other kinds of patterns.
Fun times.
"Computer! Run a level five diagnostic of the starboard nacelles!" bloop bloop bloop...
The foley artists did a pretty terrific job of using sound to differentiate between heavy computation, success, and failure etc. Makes me kinda wish my computer could play a minor third instead of just plopping up a dialog box when things go wrong.
A while back i read about a guy who had set up his phone so that it would play certain tones when it detected APs while walking around town. This based on their signal strenght, security settings etc.
This got me thinking back to my analog modem days, and how i could tell if i was getting a good connection or not depending on the noise it would make during the handshake.
What i was thinking was setting up a sniffer, and hook that up so certain tones would play based on packets passing by.
I sometimes wonder if modern computing is too reliant on one human sense, vision. More mechanical devices can give us early warnings about developing issues based on sounds and vibrations.
Ping makes a ping sound on linux.
You can choose ping on success or ping on timeout (or silent.) Fantastic for live work.
Here's an article about it, with photos [1]. I remember reading it in BYTE, years ago.
https://archive.org/stream/byte-magazine-1978-02/1978_02_BYT...
Edit: I'll bet it's no longer possible to do this on modern CPUs; either the memory busses are inaccessible (SoC) or so highly optimised (DDR4) that it's infeasible to probe them without disrupting the transmission line.
[1] Ciarcia, S. "A Penny Pinching Address State Analyzer". BYTE 3(2), pp. 6--12. February, 1978.
See the "Update on ROM extraction and decryption" section here: http://www.xenatera.com/bunnie/proj/anatak/xboxmod.html
More info here: http://www.xenatera.com/bunnie/proj/anatak/AIM-2002-008.pdf
And in his book: http://www.nostarch.com/xboxfree
I think a deep visual debugging tools are going to be 'built in' in future in much the same way that HTTP primitives were recently with node and string manipulation was with Python 2.
Although it sounded like a really cool idea, it didn't take off. Seems text is best (maybe because it supports incompatible hierarchies better).
> Although it sounded like a really cool idea, it didn't take off.
That could have been because it was bought by Boreland, who had a history of 'not succeeding' with projects, whose focus was elsewhere, who lost key staff at an important point, and then were bought out and mismanaged from there forward?
Delphi didn't have to die the death it has.
http://www.borland.com/Products/Requirements-Management/Toge...
Think about algorithm that switches values by using temporary variable for example. By looking at text, it's pretty simple to construct the flow follow the values traveling from one variable to other. But if you put it in 2D graphical interface, it becomes very problematic and hard to follow. I would imagine it would be easier if there was like a movie where value would move from one box symbolizing variable to other. But that would make it difficult to edit.
Another way would be to visually represent only change, but then it would be same as textual representation, only more redundant.
The debugger actually displays what I call a folded lattice, meaning that execution starts at the top and goes down, so representing what your talking about would simply look like ">" with lines. It would need some representation of data flow, however, which it currently doesn't have.
Both text and visual programming languages are simple representations of the structure of your program - what we normally call an AST. Neither is more 'true' than the other, and things in the text that don't match the structure are syntax errors.
https://github.com/r0nk/ward/blob/master/hello.bf
https://github.com/github/linguist/blob/master/lib/linguist/...
Just not in Ace (their code editor).
It doesn't count it in language statistics, though.
It's not showing up in the color bar, though. Loggin' dat issue.
http://mosermichael.github.io/cstuff/all/pooh-lan/2012/12/11...
here you can get an execution trace of the program: each expression is displayed as it evaluates:
http://mosermichael.github.io/cstuff/docs/html/pooh/example/...
(they used to have something like that in some scheme interpreters, i used this featue a lot at the time)
It was quite an involved & fun project as we used Java VM Tool Interface directly instead of using JDI and the layout algorithms for the diagrams are quite fancy too :)
[1] http://www.jbixbe.com [2] http://www.jbixbe.com/VisualTour.html [3] http://www.jbixbe.com/download/jar/jbixbe.jar
+1
My databases at work snapshot out their schemas to graphviz to create diagrams of all the FK relationships automatically every day, which I find helpful, and more or less inspired this idea.