<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Chronicle-Recorder Graph/Ring Visualization! Hooray!</title>
	<atom:link href="http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/</link>
	<description>visualizing things with python</description>
	<pubDate>Mon, 13 Oct 2008 09:10:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>By: visophyte: data made shiny :: chroniquery does useful things!</title>
		<link>http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/#comment-432</link>
		<dc:creator>visophyte: data made shiny :: chroniquery does useful things!</dc:creator>
		<pubDate>Wed, 17 Sep 2008 09:37:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/#comment-432</guid>
		<description>[...] pecobro, there was chroniquery (shiny, also shiny, texty), a python binding for roc&#8217;s chronicle-recorder omega-debugger.  Now, there is still [...]</description>
		<content:encoded><![CDATA[<p>[...] pecobro, there was chroniquery (shiny, also shiny, texty), a python binding for roc&#8217;s chronicle-recorder omega-debugger.  Now, there is still [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: visophyte: data made shiny :: chronicle-recorder and amd64, hooray!</title>
		<link>http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/#comment-76</link>
		<dc:creator>visophyte: data made shiny :: chronicle-recorder and amd64, hooray!</dc:creator>
		<pubDate>Sun, 27 Jan 2008 08:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/#comment-76</guid>
		<description>[...] or just look on the lower picture to get an idea of what&#8217;s going on. Just like my first post using visichron, the rings are colored based on a (naive) control-flow-taken basis. The ring colors are [...]</description>
		<content:encoded><![CDATA[<p>[...] or just look on the lower picture to get an idea of what&#8217;s going on. Just like my first post using visichron, the rings are colored based on a (naive) control-flow-taken basis. The ring colors are [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Sutherland</title>
		<link>http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/#comment-25</link>
		<dc:creator>Andrew Sutherland</dc:creator>
		<pubDate>Wed, 14 Nov 2007 08:35:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/#comment-25</guid>
		<description>Nice.  What I think would be even neater to visualize would be to take things up a notch with some data-flow analysis, providing you with known constraints on variables.  (This is common in the C/C++ static analysis realm, and arguably a bit easier.)

The visualization I am thinking of would use the static call-graph you currently have as a substrate.  It would use colored-edge-bundles to show how the control-flow varies based on pivots in the values.  Namely, each variable/object-flow would get its own hue, and then we would have specific colors (with varying saturation) for the different values that variable/object can take on.  When a call between two functions can take on many values, we display a many-colored edge representing all those values.  (This would be on a per-variable/object-flow basis too, so there might be other edges.)

For example, let us say we have a function 'a' that takes a variable 'x'.  'a' always calls 'b', but 'b' only calls 'c' when 'x is not None', and 'b' only calls 'd' when 'x is None'.  We would visualize this with a two-colored edge between 'a' and 'b', but then split out the colors for the edges to 'c' and 'd'.

I think this could help illustrate control-flows, or perhaps just provide an understanding of the style of programming in use.  For example, if we assume that we consistently choose saturations for the None/is-None case for different variables, it might be easy to differentiate between styles of error-handling.  One-person might do None-checking, illustrated by the None-color always dying off.  Another person might periodically just use None-reference exception handling, illustrated by a back-edge to a higher-level calling function.  (I am clearly assuming a fantastic static analysis tool here in the case of Python...)

The major caveat is that I don't think this would scale terribly well, or would at least require some excellent heuristics to determine which variable/object-flows were deserving of being displayed.</description>
		<content:encoded><![CDATA[<p>Nice.  What I think would be even neater to visualize would be to take things up a notch with some data-flow analysis, providing you with known constraints on variables.  (This is common in the C/C++ static analysis realm, and arguably a bit easier.)</p>
<p>The visualization I am thinking of would use the static call-graph you currently have as a substrate.  It would use colored-edge-bundles to show how the control-flow varies based on pivots in the values.  Namely, each variable/object-flow would get its own hue, and then we would have specific colors (with varying saturation) for the different values that variable/object can take on.  When a call between two functions can take on many values, we display a many-colored edge representing all those values.  (This would be on a per-variable/object-flow basis too, so there might be other edges.)</p>
<p>For example, let us say we have a function &#8216;a&#8217; that takes a variable &#8216;x&#8217;.  &#8216;a&#8217; always calls &#8216;b&#8217;, but &#8216;b&#8217; only calls &#8216;c&#8217; when &#8216;x is not None&#8217;, and &#8216;b&#8217; only calls &#8216;d&#8217; when &#8216;x is None&#8217;.  We would visualize this with a two-colored edge between &#8216;a&#8217; and &#8216;b&#8217;, but then split out the colors for the edges to &#8216;c&#8217; and &#8216;d&#8217;.</p>
<p>I think this could help illustrate control-flows, or perhaps just provide an understanding of the style of programming in use.  For example, if we assume that we consistently choose saturations for the None/is-None case for different variables, it might be easy to differentiate between styles of error-handling.  One-person might do None-checking, illustrated by the None-color always dying off.  Another person might periodically just use None-reference exception handling, illustrated by a back-edge to a higher-level calling function.  (I am clearly assuming a fantastic static analysis tool here in the case of Python&#8230;)</p>
<p>The major caveat is that I don&#8217;t think this would scale terribly well, or would at least require some excellent heuristics to determine which variable/object-flows were deserving of being displayed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Prashanth Ellina</title>
		<link>http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/#comment-24</link>
		<dc:creator>Prashanth Ellina</dc:creator>
		<pubDate>Wed, 14 Nov 2007 07:50:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.visophyte.org/blog/2007/09/03/chronicle-recorder-graphring-visualization-hooray/#comment-24</guid>
		<description>Quite interesting, I did something similar by statically analyzing python source code. You can read more about it here http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code</description>
		<content:encoded><![CDATA[<p>Quite interesting, I did something similar by statically analyzing python source code. You can read more about it here <a href="http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code" rel="nofollow">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
