What are you planning on using Visualizers for?

One of the big new features for VS in Whidbey is the ability to write custom visualizers
for your classes. Visualizers are written in managed code, and present whatever interface
they want to view and edit the data.

There are some obvious place where we’re going to use this – if you’ve ever tried
to look at the data in a dataset, you know that there’s a lot of room for improvement.
But we’re interested in how you’re planning on using it. Specifically:

1) How many visualizers do you think you will write?

2) What kind of objects will you write visualizers for?

Comments (12)

  1. John Cavnar-Johnson says:

    I haven’t looked at visualizers in great depth, but they seem to be the perfect enhancement for a technique I’ve used quite a bit recently. I’ve started implementing messaging-based systems using custom formatters (available in System.Messaging), but it’s sometimes hard to communicate the importance of the message to programmers steeped in the object-oriented tradition. Visualizers might just do the trick.

  2. Cleve Littlefield says:

    From what I gather visualizers are mainly just for Debug purposes correct? This is a great idea, especially that they are extensible. I would probably create visualizers for an complex class that I expect other people to have to use, and I would hope that any component developer would create visualizer for their shared components.

  3. Erik Charlebois says:

    I found myself really wishing I had this sort of capability a month ago. I would want to use this for classes or data structures whose logical representations differs from their memory representations.

    Examples would be: graphs/trees, xml strings, images, any sort of binary data that could be shown in a more meaningful way.

    It would be nice to be able to use D3D in the visualizer to be able to have quality 3D representation if needed. The other feature I’d like (probably can be done already with some outside tool) is to be able to record an mpeg or a series of snapshots of the visualization as you go through the debugger. I think this would be very useful for generating images to document algorithms/processes.

  4. (1) Many. I have spent countless hours writing visualizers and any support would be welcome.

    (2) Parsers which would show what is happening at all times

    (3) Simulated computers which would provide a control panel

    (4) Inspectors which would inspect the object for correctness and display a report. I may not need to "inspect" objects if I get Generics and use inheritance in place of delegation.

  5. Hallgrim says:

    – Distribution of HashCodes
    – Grayscale images from float[,] and int[,] with white for min value in the array and black for max value in the array
    – Image slices trough float[,,] and int[,,]
    – Plot a list of points in cartesian space.
    – Plot a list of polar points in a polar plot (instead of trying to remember fractions of Pi)

  6. An overview of all of a PC’s files that shows how file names and contents are duplicated across file tree branches.

    The model I’d use would be nature.

    The state of the file space would be a tree in autumn with subtle color differences and gradations.

    If two leaves were of visually identical color this would mean that you could click on them to see the file identifiers even if they were in different folders, in different branches of the tree.

    Or consider the net heap, visualized as a garage filled with objects.

    Select a picture for each object of distinct type, as returned by gettype.tostring, allowing the user to select objects to represent objects from a menu of pictures which he can extend.

    He would see let us say ten Sears Craftsman power saws, all of them labeled "Financial Status".

    If they are cloneable and indeed clones of each other they would be the same color: but if not they would be of different color.

    Objects that have been set to nothing, but haven’t been garbage collected, would be shown with gradually decreasing Opacity fron 100 to 1. You could also have a figure representing the Garbage Collector, perhaps some crazed avatar with a bag chuckling to himself and walking about your garage.

    Shades of Microsoft Bob, I know, but with current technology might work, and has the potential to change the programmer’s job to any number of scenarios including puttering about the garage or walking on a beach in Maui picking up sea-shells.