24 Mar 2015

A visual programming interface for javascript(D3) data visualizations.
This would serve as a way to visually manipulate/generate d3 code and better understand the structure of the program. D3 is often described as having a “steep learning curve”; I think visually seeing the structure of the code and how different objects change could reduce this barrier. I think that combining some concepts from existing visual programming environments like Max MSP would be helpful, while also recognizing that the concise format d3 is written in is also beneficial. Balancing these two features would be a challenge in this project.

I’m really interested in visual programming and diagramming and would like my project to somehow relate to this, so that is the motivation for some of the research. I started out by looking into a lot of resources related diagramming, and visual proof but I wanted the project to be less abstract and more useful so this lead eventually to visual programming.

Visual Programming
A lot of my research focused on data flow programming where the program structure is represented as a graph and the user edits the logic by modifying the nodes and the graph structure. I was really impressed by how smooth interacting with Max msp’s interface was (although I haven’t used it extensively) and thought that some in browser equivalent for visual media would be nice, specifically data driven visualizations in d3.

Then I found an existing flow based javascript programming environment, and different examples of programs on their website. It seems like they’ve done most of the work of creating all the underlying structure. So, I’m not sure that I would want to just create a sketch using their product and apply it to d3, since I wanted to actually learn more about how to create that interface.

Dataflow Programming: 
So next I looked for some sources on just data flow to better understand what this means. I found a book called Data Flow and Reactive Programming which went over a lot of points about the benefits of this paradigm (parallelization, responsiveness to changing data, and the lack of constraints on the internal content of nodes). Lastly, they note that the graph structure lends itself to visual representation fairly well. The book outlines data types and a conceptual over view (very high level) of how this might be implemented.