Visualizing Code to Fail Faster

I think other commenters are pointing out the true problem. The presenter has produced a tremendous tool for an extremely domain specific problem.

Unfortunately, the vast majority of real programs have so many degrees of freedom that you couldn’t possibly generalize a system like this in any meaningful way. Even worse, the outputs of many programs don’t lend themselves to easy visualization.

When I am working on a program, a chance in code could effect 30-40 different output files, change the network communication of 2-3 different connections, etc. There simply isn’t a way for a human to visualize that all at once.

The aphorism is “make things as simple as possible, but no simpler”. The trouble with programming at any real scale is that it isn’t simple, and nothing can make it simple.

My experience is that many general systems designed to make life easier, make simple tasks really simple, moderate tasks slightly easier, and complex tasks anywhere from a little bit to a lot harder. I’ve used good tools for complex problems, but they were all extremely specific to the project.

I have yet to find good global tools that make general programming fundamentally easier.

The latest xcode does on-the-fly static/error checking and the now de rigueur completion stuff – and the first thing I do is turn it all off. Programming is creative writing, and I want a quiet place where I can think with out the system popping in and pulling me out of flow.

Certainly time-based visualization has uses in certain problem domains, but it is important this circus of capabilities be able to be put into the background and come only when called.

Perhaps this is just an implementation detail.

Of course, I’ve been programming professionally for 30 years, so I am an ossified old fart.

GET OFF MY LAWN!

I build an interactive javascript learning website. http://learnjs.info
tries to help see how code runs and fails

What would be the next logical step would be to get unit tests generated as we are typing out code. Add a few code analysis tools to the mix and we have a good feature set for next version of Visual Studio.

Um, you were saying… http://meteor.com/screencast

Check out and please back the Light Table project for JavaScript and Clojure: http://www.kickstarter.com/projects/ibdknox/light-table, which attempts to do some of what Bret was demonstrating. From the site:

Light table is based on a few guiding principles:

  • You should never have to look for documentation
  • Files are not the best representation of code, just a convenient serialization.
  • Editors can be anywhere and show you anything - not just text.
  • Trying is encouraged - changes produce instantaneous results
  • We can shine some light on related bits of code