I am pleased to announce the release of a new open source library from element 84. VDD Core is a Clojure library built to help enable Visualization Driven Development. Visualization Driven Development (VDD) is a new name for an old concept. VDD is the practice of using interactive visualizations to aid in understanding the execution of code.
One problem of computing is that it’s somewhat abstract and intangible. Other than any output we insert into our code we can’t tell what happens when the code executes. We try to form a mental model as we develop software. The mental model reflects how we think our code will execute. When the mental model doesn’t match what happens during actual execution we get unexpected results. This happens often during development where we constantly test and make corrections to our mental model and code. Maintaining this mental map of behavior gets difficult as software grows in complexity and size.
We have an existing set of tools to help us in logs, debuggers and REPLs. Logs are great for capturing information after software is developed for analysis. Debuggers let us freeze a moment in time on a single thread and see what’s happening. REPLs let us test our components interactively. These tools work but have issues. Logs can’t show context and are only temporarlly organized. Debuggers give you that single view of the world but can’t tell you what happened right before this breakpoint or what’s happening on other threads or processes at the same time. Also, debuggers are mostly useful when code is structured in a linear imperative style. REPLs work best when we can interact with small components in a single request response style. All of these tools also have the limitation of only communicating via text. This limits the amount of information that can be quickly communicated.
Where VDD fits in
Visualization Driven Development does not try to replace those existing tools completely. It tries to fill the gaps where they leave off. It’s meant more for the macro view showing multiple components in concert. Visualizations can communicate information very efficiently. They can hide information until it’s needed. They can show information in context in ways that those other tools can’t. Interactive visualizations also have the same benefit as REPLs in that they can test the same code they’re visualizing.
VDD Core’s goal is to make it easy to build your own visualization. There’s a long way to go before it’s truly trivial. Hopefully it’s a step in the right direction that will encourage others to start experimenting more in this area.
See the VDD Core Wiki for more information about it and VDD.
Check out the examples project to see it in action.
I’ll be speaking about Visualization Driven Development and VDD Core at Strange Loop next week in St. Louis. Please come talk to me while I’m there. I’d love to hear other’s interests and ideas in this area.