Exploration: How much can debugging resemble music playback?
As I was working on an exploration on debugging interfaces, I came across the concept of using music controls for code execution (just for fun). What buttons would you expect to be there, and what would you expect those buttons to do?
I'm also looking for other debugging projects for inspiration, and I'd love to hear what are your essential debugging tools and workflows!
Thank you!
Really cool metaphor! A few things that triggered:
- playlists (lists of function execution?)
- songs and albums, album covers (functions and collection of those)
- next song in queue
- Volume control (control how much details of the code are exposed?)
- like a song (function)
Something that came to my mind from this is that: what if debugger played sound effects for different operations on a line you just stepped over. Like high ping for setting a high number value to a variable, low for setting a low value, some drum for reference access, different instruments for different mathematical operations etc.
I'm wondering if developers could learn to hear anomalies in algorithms and patterns etc.. Like "this is not how this algorithm or pattern should sound, so there must be mistake somewhere". Or learn to hear how values on a tight loop develop for example. Certainly it should be possible to at least hear if a value in a loop decrements instead of increments.
I like this interface as long as the debugging model is "record and replay". Most debuggers use an "execution control" model where you are stopping (and potentially changing) the program as it runs.
Florian Schulz great ideas! I was so focused on the debugging, I didn't realize are a bunch of other parallels that can be done!
@Jarno Montonen I wonder how to make this in a way to make it sound good (or at least not terrible). I don't have enough music theory knowledge, but I'll definitely look into it
Chris Knott I'm curious, why would the "execution control" model be bad in this situation? I was planning on at most doing "record and replay" but just because it would be easier, I'd love if you could expand your opinions.
Thanks everyone for sharing your thoughts!
Basically because programs can have side effects in a way music/film can't. If you have a program that makes a random Tweet, or writes a file, then you have to decide what skipping back and forth over this line does - i.e. does it repeatedly execute the side effect?
In a normal debugger like Visual Studio, which doesn't record and had stepping back added on later, it repeats the side effect. I think users feel much safer playing with a recording which isn't actually running while you are debugging.
That makes a lot of sense! I do feel that seeing how a code behaves for different inputs can be helpful, but if there are side effects, it will definitely be more confusing, and likely have undesirable outcomes. I'll keep this in mind if I decide to do an exploration focused on "execution control".
Thanks again for sharing!