<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Outer Thoughts &#187; Search Results  &#187;  graphviz</title>
	<atom:link href="http://blog.outerthoughts.com/search/graphviz/feed/rss2/" rel="self" type="application/rss+xml" />
	<link>http://blog.outerthoughts.com</link>
	<description>&#62; From inner thoughts to the outer limits of Alexandre Rafalovitch</description>
	<lastBuildDate>Wed, 27 Jul 2011 00:24:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Visualizing CiteULike collections</title>
		<link>http://blog.outerthoughts.com/2009/01/visualizing-citeulike-collections/</link>
		<comments>http://blog.outerthoughts.com/2009/01/visualizing-citeulike-collections/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 07:10:20 +0000</pubDate>
		<dc:creator>arafalov</dc:creator>
				<category><![CDATA[Computational Linguistics]]></category>
		<category><![CDATA[My PhD research]]></category>
		<category><![CDATA[Problems and Solutions]]></category>
		<category><![CDATA[CiteULike]]></category>
		<category><![CDATA[Graphviz]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.outerthoughts.com/?p=266</guid>
		<description><![CDATA[<p>I am collecting my reading and reference material in CiteULike. I like the service because it can capture details from multiple sources. It also allows to discover what was collected by other interesting people through tags, people and bookmarks graph navigation.</p> <p>Nice as CiteULike is, it is fairly difficult to get an overall picture of <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.outerthoughts.com/2009/01/visualizing-citeulike-collections/">Visualizing CiteULike collections</a></span>]]></description>
			<content:encoded><![CDATA[<p>I am collecting my reading and reference material in <a title="My library in CiteULike" href="http://www.citeulike.org/user/arafalov">CiteULike</a>. I like the service because it can capture details from multiple sources. It also allows to discover what was collected by other interesting people through tags, people and bookmarks graph navigation.</p>
<p>Nice as CiteULike is, it is fairly difficult to get an overall picture of one&#8217;s own collection. It is especially difficult to see quickly if there are people who serve as hubs by collaborating with multiple different groups. The information is there, but it requires a lot of clicks to find it out.</p>
<p>My usual solution is to export information out, massage it into <a title="Home page of Graphviz" href="http://www.graphviz.org/">Graphviz</a> format and use graph segmentation and layout algorithms to get a better overview. I <a title="Search for my articles mentioning Graphviz" href="http://blog.outerthoughts.com/?s=graphviz">have talked about Graphviz</a> a number of times on this blog before. This is yet another time it proved useful.</p>
<p>I started by exporting CiteULike&#8217;s content of my library. I found Endnote export format to be more structured and therefore easier to parse. I then run it through <a title="My converter" href="http://www.outerthoughts.com/files/paperviz/v1/convert.py">a custom Python program</a> that basically spat out graph with titles pointing at authors. That produced a <strong>very large</strong> graph and was not particularly useful.</p>
<p>The next step was to discover disjointed clusters of titles/authors. I used <em>ccomps</em> with -v and -x flags (e.g. <em>ccomps.exe -v -x -o comp.dot output.dot</em>).</p>
<p><em>ccomps</em> gave me partitioned graphs as well as statistics on number of nodes/edges in each graph. I could then choose a graph with large number of nodes/edges (eventually, all of them) and run it through <em>neato</em> with overlap=scale and splines=true (e.g. <em>neato.exe -Tgif -o neato_1.gif -Goverlap=scale -Gsplines=true comp_1.dot</em>).</p>
<p>The resulting graph was still not perfect, but it was a good start. I also tried <em>fdp</em> instead of <em>neato</em>, but that seemed to produce giraffe versions of the graph with graph edges being overly long.</p>
<p>You can see <a title="Output image of one of the clusters" href="http://www.outerthoughts.com/files/paperviz/v1/neato_1.gif">an example</a> of <em>neato</em> output for one of my clusters. Warning: if it causes problems due to its size, try it with <a title="Graphics viewing freeware" href="http://www.irfanview.com/">IrfanView</a>; that program can display even improbably large graphs (e.g. unpartitioned ones).</p>
<p>I have run into some problems as well that would either cause partitions combine together or produce duplicate nodes and edges.</p>
<p>The first problem was that sometimes a person was an author and sometimes an editor. I was interested in both, so collapsed those fields together. That caused some non-people to then show up on the graph and connect clusters in unexpected ways. For my library the specific value was &#8216;European&#8217;, so I filtered it out in the code.</p>
<p>The second problem was to do with CiteULike&#8217;s parsing. Sometimes, it would split a first+last name into separate names, probably due to incorrect manual entry at some point. I had to fix those at the source by editing corresponding CiteULike entry. Probably a good thing to do anyway.</p>
<p>The other problem is right out of the co-reference resolution domain. Sometimes names would include full first names, sometimes only a first name initial. I have worked around that by normalizing all first names to the initials. Obviously, this could collapse entries belonging to multiple real people into one.</p>
<p>Further on name problems, in cases of non English names (e.g. Spanish names with multiple surnames), CiteULike would get confused which part is which and not display or export it correctly. Additionally, sometimes characters such as <strong>ñ</strong> would be entered as plain <strong>n</strong>. Those also needed to be corrected manually.</p>
<p>The project only took a couple of hours including writing code and cleanup. It is already useful to me, as I found a new person who was in unexpectedly large number of papers and also found a chain of connections that might be interesting to follow more closely.</p>
<p>There is of course a lot more that could be done. Automatic co-reference of misspelt names, layout hints based on number of times authors appeared together, color coding of tags &#8211; these are just some of the easy ideas.</p>
<p>There might even be a small project/paper in doing co-reference resolution and cleaning up CiteULike data? After all, similar projects were done for Wikipedia. I don&#8217;t think CiteULike currently makes a full export available, but they do have <a title="CiteULike's datasets available for research" href="http://www.citeulike.org/faq/data.adp">some</a> so might be amendable to exporting a special set for research purposes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.outerthoughts.com/2009/01/visualizing-citeulike-collections/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Another large syntax tree visualiser</title>
		<link>http://blog.outerthoughts.com/2007/07/another-large-syntax-tree-visualiser/</link>
		<comments>http://blog.outerthoughts.com/2007/07/another-large-syntax-tree-visualiser/#comments</comments>
		<pubDate>Tue, 24 Jul 2007 02:18:16 +0000</pubDate>
		<dc:creator>arafalov</dc:creator>
				<category><![CDATA[Computational Linguistics]]></category>

		<guid isPermaLink="false">http://blog.outerthoughts.com/2007/07/another-large-syntax-tree-visualiser/</guid>
		<description><![CDATA[<p>I found another online syntax tree visualiser that can cope with large trees &#8211; phpSyntaxTree. It requires square brackets instead of the lisp s-expression ones, but it should not be too hard to convert from one to another. There is also a Ruby version of the application from a different developer, but it refused to <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.outerthoughts.com/2007/07/another-large-syntax-tree-visualiser/">Another large syntax tree visualiser</a></span>]]></description>
			<content:encoded><![CDATA[<p>I found another online syntax tree visualiser that can cope with large trees &#8211; <a href="http://ironcreek.net/phpsyntaxtree/" title="Link to the webpage of the tool">phpSyntaxTree</a>. It requires square brackets instead of the lisp s-expression ones, but it should not be too hard to convert from one to another. There is also<a href="http://www.yohasebe.com/rsyntaxtree/" title="Ruby version of the syntax tree visualiser"> a Ruby version of the application</a> from a different developer, but it refused to display one of my large sentences that the original had no problems with.</p>
<p>The result of the parse is an image and is fairly easy to read with the leaves (words) laid out in strata (stratas?). <a href="http://blog.outerthoughts.com/2007/06/laying-out-penn-treebank-output-of-stanford-parser/" title="Link to the blog article about my attempt at visualising trees">My own visualiser</a> is not able to do that at the moment. On the other hand, it uses Graphviz which can output SVG and I am hoping eventually to use that for a semi-interactive tree exploration interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.outerthoughts.com/2007/07/another-large-syntax-tree-visualiser/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Laying out penn treebank output of Stanford parser</title>
		<link>http://blog.outerthoughts.com/2007/06/laying-out-penn-treebank-output-of-stanford-parser/</link>
		<comments>http://blog.outerthoughts.com/2007/06/laying-out-penn-treebank-output-of-stanford-parser/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 04:31:46 +0000</pubDate>
		<dc:creator>arafalov</dc:creator>
				<category><![CDATA[Computational Linguistics]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.outerthoughts.com/2007/06/laying-out-penn-treebank-output-of-stanford-parser/</guid>
		<description><![CDATA[<p>I am trying to use Stanford NLP parser for my research and I need to look at the trees it produces for large, complex sentences. I have found several packages for laying out the output as trees, but they are all seem to be targeted at visualizing smaller sentences, suitable for illustrating a point in <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.outerthoughts.com/2007/06/laying-out-penn-treebank-output-of-stanford-parser/">Laying out penn treebank output of Stanford parser</a></span>]]></description>
			<content:encoded><![CDATA[<p>I am trying to use <a href="http://www-nlp.stanford.edu/downloads/lex-parser.shtml" title="Webpage of the parser">Stanford NLP parser</a> for my research and I need to look at the trees it produces for large, complex sentences. I have found several packages for laying out the output as trees, but they are all seem to be targeted at visualizing smaller sentences, suitable for illustrating a point in the published paper. <a href="http://www.outerthoughts.com/files/line_tree2.gif" title="Sample output of Graphviz layout for Stanford Parserâ€™s output"><img src="http://blog.outerthoughts.com/wp-content/uploads/2007/06/line_tree2_icon.gif" title="Sample output of Graphviz layout for Stanford Parserâ€™s output" alt="Sample output of Graphviz layout for Stanford Parserâ€™s output" align="left" height="86" vspace="10" width="142" /></a></p>
<p>My trees are large. A sentence of 40 words is an average case, rather than an edge one. So, all of the display packages I have tried cut off large chunks of the tree. It might be possible to tinker with their LaTeX code to produce output that is not cut-off at letter, a4 or even a3 size, but I am not that good with LaTeX yet. And I need to produce this large trees quickly, as I am not even sure whether this parser would be suitable for my needs in the long run.</p>
<p>So, instead, I wrote my own bridging code in Java between penn treebank output of the parser and <a href="http://www.graphviz.org/" title="Homepage of the Graphviz software">Graphviz</a>, graph layout software that I use for many layout tasks. The whole implementation was in one file less than 100 lines total and that included the logic to highlight maximum spanning subtrees of a particular element (NounPhrase in this example). Click on the small image to see the full example. Graphviz input file is <a href="http://www.outerthoughts.com/files/line_tree2.dot" title="Graphviz intermediate file for the example">also available</a> for the curious.</p>
<p>At the moment, it is sufficient to convert to image files. If I ever do convince the parser to understand my 80-word sentences, the resulting trees will probably be large enough to need <a href="http://zvtm.sourceforge.net/zgrviewer.html" title="Link to ZGRViewer software for Graphviz files">ZGRViewer</a>.</p>
<p>The Java bridging code is not available yet, as it is very ugly. The secret was in the <a href="http://www-nlp.stanford.edu/viewvc/trunk/javanlp/src/edu/stanford/nlp/trees/PennTreeReader.java?view=markup" title="Source view for the PennTreeReader class">PennTreeReader</a>&#8216;s main() method that showed how to read the parser&#8217;s output back in and into Tree form suitable for recursive descent. After that, it was just the code to navigate the tree levels and spit out incredibly easy Graphviz format. I will probably clean the code up a bit over the next couple of weeks and then release it.</p>
<p>If somebody does like the output and wants to see the code sooner, send me an email at alex@thisdomain.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.outerthoughts.com/2007/06/laying-out-penn-treebank-output-of-stanford-parser/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>More GraphViz goodness</title>
		<link>http://blog.outerthoughts.com/2006/02/more-graphviz-goodness/</link>
		<comments>http://blog.outerthoughts.com/2006/02/more-graphviz-goodness/#comments</comments>
		<pubDate>Sat, 25 Feb 2006 00:54:59 +0000</pubDate>
		<dc:creator>arafalov</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.outerthoughts.com/?p=75</guid>
		<description><![CDATA[I wrote about GraphViz before, but so many new Java projects showed up, that I thought it was worth making an update.</p> Grand: Ant config file visualizer that even better than other options I wrote about before. LightUML: UML generator from Java classes Linguine Maps: Visualizer library for many types including WSDL, Ant, Hibernate and <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.outerthoughts.com/2006/02/more-graphviz-goodness/">More GraphViz goodness</a></span>]]></description>
			<content:encoded><![CDATA[<div>I wrote about GraphViz <a href="http://blogicblog.blogspot.com/2004/10/power-of-graphviz.html">before</a>, but so many new Java projects showed up, that I thought it was worth making an update.</p>
<ol>
<li><a href="http://www.ggtools.net/grand/">Grand: Ant config file visualizer</a> that even better than other options I wrote about before.</li>
<li><a href="http://lightuml.sourceforge.net/">LightUML</a>: UML generator from Java classes</li>
<li><a href="http://www.softwaresecretweapons.com/jspwiki/Wiki.jsp?page=LinguineMaps">Linguine Maps</a>: Visualizer library for many types including WSDL, Ant, Hibernate and DTD</li>
<li><a href="http://www.kirkk.com/main/Main/JarAnalyzer">JarAnalyzer</a>: Dependency visualization for jar files (with an <a href="http://jroller.com/page/carlossg?entry=analyzing_jar_dependencies">independent review</a>)</li>
</ol>
<p>If you have anything where A and B point to C and C points to D, <a href="http://www.graphviz.org">GraphViz</a> is really worth checking out.<br />
It is not in Java however; if you only look at Java products, check out <a href="http://prefuse.sourceforge.net/">Prefuse</a> instead.</p>
<p>BlogicBlogger Over and Out</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.outerthoughts.com/2006/02/more-graphviz-goodness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My take on &#8220;problem solving skills&#8221;</title>
		<link>http://blog.outerthoughts.com/2005/09/my-take-on-problem-solving-skills/</link>
		<comments>http://blog.outerthoughts.com/2005/09/my-take-on-problem-solving-skills/#comments</comments>
		<pubDate>Mon, 19 Sep 2005 19:02:00 +0000</pubDate>
		<dc:creator>arafalov</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.outerthoughts.com/?p=63</guid>
		<description><![CDATA[<p>cynicalman asks what the &#8220;problem solving skills&#8221; in a job description actually mean and then tries to discover and blog the answers.</p> <p>I do not actually agree that his first discovered rule is actually &#8220;a skill&#8221; (I think it is more of a test procedure), but the question asked does require a thought.</p> <p>I was <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.outerthoughts.com/2005/09/my-take-on-problem-solving-skills/">My take on &#8220;problem solving skills&#8221;</a></span>]]></description>
			<content:encoded><![CDATA[<p>cynicalman asks <a href="http://blog.geeksmithology.com/?p=78">what the &#8220;problem solving skills&#8221; in a job description actually mean</a> and then tries to discover and blog the answers.</p>
<p>I do not actually agree that his first discovered rule is actually &#8220;a skill&#8221; (I think it is more of a test procedure), but the question asked does require a thought.</p>
<p>I was frequently told that I have good problem solving skills. So, here is my quick take on what those skills are:</p>
<dl>
<dt> Being able to quickly deduce a structure and meaning from the given examples or behaviour </dt>
<dd> For example, my co-worker was having a problem with a Fortran program. I haven&#8217;t seen Fortran before, but was able to figure out the control structure rules on the fly and see where the bug was. Another example would be to take a program with an unfamiliar menu structure (or a familiar Microsoft one) and quickly find where a particular option could be. </dd>
<dt> Knowing how to ask question &#8211; of yourself and others &#8211; that would partition the problem space </dt>
<dd> <em>So, you say the server has crashed?</em> is not a good question. How about <em>When you say the server crashed, did the program exit completely? If not, was it rather just very slow and/or returned to normal a while later?</em> It is really a couple of questions here, but the idea is to split the possible problem space into segments and decide which segment to keep working with. Similarly a good question would be: <em>If this was caused by a network problem, how/where/when would it show up? Which log or trace file do I need to check to confirm or reject this?</em> </dd>
<dt> Knowing how to convert data into information </dt>
<dd> Getting a 3 page long java thread dump is a (bad?) luck. Knowing how to read that thread dump to identify what the program was doing at the time and what it was _not_ doing is a problem solving skill.  </dd>
<dt> Being able to manipulate large datasets and extract required individual entries </dt>
<dd> To me, this covers not being scared by 2GBytes access logs when I search for a problem behaviour pattern. It also covers knowing the tools to slide/dice/reconstruct the data sets.  </dd>
<dt> Having a toolkit and knowing it well </dt>
<dd> At the moment, my toolkit is <a href="http://blogicblog.blogspot.com/2004/09/fitting-first-post-i-love-vim.html">Vim with couple of plugins</a> for editing and RegExp work, <a href="http://blogicblog.blogspot.com/2005/07/re-open-source-applications-for-it.html">Ethereal</a> for network, <a href="http://blogicblog.blogspot.com/2004/09/troubleshooting-classnotfoundexception.html">FileMon</a>/RegMon/TcpMon from <a href="http://www.sysinternals.com/">SysInternals</a> for Windows troubleshooting, <a href="http://blogicblog.blogspot.com/2004/09/xmlstarlet-gentle-introduction-into.html">XMLStarlet</a> for XML files, and, of course, Cygwin for its full toolchain. I have also written custom programs, mostly for complex data extraction. Finally, I use <a href="http://blogicblog.blogspot.com/2004/10/power-of-graphviz.html">GraphViz</a> for visualization of my extraction results. One of the things that frustrates me most is a person reading a log file in Notepad. What can they do with it except looking at it one line at a time? No highlighting, no place marks, no way to interactively clean it up by regexp deleting some unrelated sections. </dd>
<dt> And, above all, not giving up </dt>
<dd> Most of the situations can be troubleshooted successfully. Especially if you can reproduce it, insert trace statements or do other developer level modifications. If you think you hit a <em>writer&#8217;s block</em> of troubleshooting, use the same techniques writers do (try anything, switch attention, define next action, etc.) </dd>
</dl>
<p>Comments, thoughts, references?</p>
<p>BlogicBlogger Over and Out</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.outerthoughts.com/2005/09/my-take-on-problem-solving-skills/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Re: Open Source Applications for IT You&#8217;ve Never Heard Of</title>
		<link>http://blog.outerthoughts.com/2005/07/re-open-source-applications-for-it-youve-never-heard-of/</link>
		<comments>http://blog.outerthoughts.com/2005/07/re-open-source-applications-for-it-youve-never-heard-of/#comments</comments>
		<pubDate>Sun, 24 Jul 2005 15:27:00 +0000</pubDate>
		<dc:creator>arafalov</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.outerthoughts.com/?p=57</guid>
		<description><![CDATA[<p>Alan Williamson is planning to present about Open Source application that most of people don&#8217;t know about.</p> <p>He is also asking the community to contribute their lists. Well, I have three tools that I like enough to mention (again).</p> Ethereal Whenever you have to troubleshoot an application with a lot of network traffic, Ethereal is <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.outerthoughts.com/2005/07/re-open-source-applications-for-it-youve-never-heard-of/">Re: Open Source Applications for IT You&#8217;ve Never Heard Of</a></span>]]></description>
			<content:encoded><![CDATA[<p>Alan Williamson is <a href="http://alan.blog-city.com/oscon.htm">planning to present about Open Source application that most of people don&#8217;t know about</a>.</p>
<p>He is also asking the community to contribute their lists. Well, I have three tools that I like enough to mention (again).</p>
<dl>
<dt> <a href="http://www.ethereal.com/">Ethereal</a> </dt>
<dd> Whenever you have to troubleshoot an application with a lot of network traffic, Ethereal is a good tool to keep in mind. It allows to see the network traffic on both high and low level and is flexible enough to narrow down exactly to the information subset needed. And it <a href="http://wiki.ethereal.com/Mate">keeps getting better</a>.  </dd>
<dt> <a href="http://xmlstar.sourceforge.net/">XMLStarlet </a> </dt>
<dd> If you are trying to extract some information from an XML file, XMLStarlet is a great way to quickly try several approaches without having to type a lot of XSLT. I have written about it <a href="http://blogicblog.blogspot.com/2004/09/xmlstarlet-gentle-introduction-into.html">before </a>, but there were some bigger introduction articles written about it later <a href="http://www.freesoftwaremagazine.com/free_issues/issue_06/xml_starlet/">here</a>  and <a href="http://www-128.ibm.com/developerworks/xml/library/x-starlet.html">here</a> </dd>
<dt> <a href="http://www.graphviz.org/">GraphViz</a> </dt>
<dd> This is a visualization tool that allows you to build complex graphs (directed or otherwise) from a very simple description language. I <a href="http://blogicblog.blogspot.com/2004/10/power-of-graphviz.html">talked</a> about it in depth before as well. </dd>
</dl>
<p>All of these tools have just enough of a learning curve, to need an effort to learn them. But once you get over that initial hump, the tools are suddenly very applicable nearly at the daily basis. From my experience, I really would recommend to have a look at them, so that later, when the actual needs arises, you would know that the powerful, open source tools exist to help you out.</p>
<p>BlogicBlogger Over and Out</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.outerthoughts.com/2005/07/re-open-source-applications-for-it-youve-never-heard-of/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The power of GraphViz</title>
		<link>http://blog.outerthoughts.com/2004/10/the-power-of-graphviz/</link>
		<comments>http://blog.outerthoughts.com/2004/10/the-power-of-graphviz/#comments</comments>
		<pubDate>Sun, 03 Oct 2004 07:40:14 +0000</pubDate>
		<dc:creator>arafalov</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.outerthoughts.com/?p=8</guid>
		<description><![CDATA[<p>Ever felt the need to extract some relations from the configuration or data and present it in a visual form nicely layed out. Ever given that up as too hard due to the hard problem of laying out the elements? If you did, then check out GraphViz.</p> <p>While GraphViz by itself is not Java, it <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.outerthoughts.com/2004/10/the-power-of-graphviz/">The power of GraphViz</a></span>]]></description>
			<content:encoded><![CDATA[<p>Ever felt the need to extract some relations from the configuration or data and present it in a visual form nicely layed out. Ever given that up as too hard due to the hard problem of laying out the elements? If you did, then check out <a href="http://www.graphviz.org/">GraphViz.</a></p>
<p>While GraphViz by itself is not Java, it is cross-platform and is fairly easy to setup and invoke from Java. It is also open-source, if that is important to you.</p>
<p>So, what does GraphViz do? Well, it does fancy graph layouts. Sounds boring until you realize that graphs &#8211; or data that could become graphs &#8211; are actually all over the Java world.</p>
<p>Let me give you a few examples:</p>
<ul>
<li>Ant task dependancies are graphs. If your ant file is rather large, check out <a href="http://ant2dot.sourceforge.net/">ant2dot</a>, <a href="http://vizant.sourceforge.net/">Vizant</a> or <strike><a href="http://www.ericburke.com/downloads/antgraph/index.html">AntGraph</a></strike> (<a title="WayBack Machine archive of the page" href="http://web.archive.org/web/20050323202300/http://www.ericburke.com/downloads/antgraph/index.html">WayBackMachine archive</a>).</li>
<li>Spring dependencies are graphs. If your Spring project is getting complex, get an overview of it with <a href="http://www.samoht.com/wiki/wiki.pl?SpringViz">SpringViz</a>.</li>
<li>If your code is already deployed, but you experience hangs or slowdowns, Graphviz will help to <a href="http://dev2dev.bea.com/products/wlplatform81/articles/thread_dumps.jsp">visualize the thread dumps</a>.</li>
<li>If you are not happy with GIF/SVG/PNG/PS output that Graphviz is capable of generating, you could always try a more interactive approach with <a href="http://zvtm.sourceforge.net/zgrviewer.html">ZGRViewer</a> (a bit raw, but very promising project)</li>
<li>Many other uses exist, some of which are described at the <a href="http://www.graphviz.org/Resources.php">GraphViz resource page</a></li>
<li>Finally, if you are able to generate text file that says a-&gt;c; b-&gt;c; c-&gt;d, you can generate GraphViz input (dot file) and let the program itself do the magic of layout. And once you master a simple dot file, you can start adding such bells and whistles as colors, clusters and structures.</li>
</ul>
<p>If you have an itch to scratch, let GraphViz help you with it.</p>
<p>BlogicBlogger Over and Out</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.outerthoughts.com/2004/10/the-power-of-graphviz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

