<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

  <channel>
    <title>ofnodesandedges.com</title>
    <link>http://ofnodesandedges.com/</link>
    <atom:link href="http://coyled.com/rss.xml" rel="self" type="application/rss+xml" />
    <description>tools and experimentations from jacomyal</description>
    <language>en-us</language>
    <pubDate>Wed, 21 Mar 2012 16:18:44 PDT</pubDate>
    <lastBuildDate>Wed, 21 Mar 2012 16:18:44 PDT</lastBuildDate>

    
    <item>
      <title>Introducing sigma.js</title>
      <link>http://ofnodesandedges.com/2012/03/22/sigmajs.html</link>
      <pubDate>Thu, 22 Mar 2012 00:00:00 PDT</pubDate>
      <author>alexis.jacomy@gmail.com (Alexis Jacomy)</author>
      <guid>http://ofnodesandedges.com/2012/03/22/sigmajs</guid>
      <description>&lt;p&gt;I just released &lt;a href=&quot;http://sigmajs.org&quot;&gt;&lt;strong&gt;sigma.js&lt;/strong&gt;&lt;/a&gt;, a JavaScript graph drawing library. It has been developed from my experience with SiGMa for Flash, but with big changes to make it more fluid and scalable.&lt;/p&gt;
&lt;p&gt;I learned to manipulate and explore graphs with &lt;a href=&quot;http://gephi.org&quot;&gt;Gephi&lt;/a&gt;, which is definitely user-oriented, and I just wanted to design a tool that makes possible to use the same graphs on the Web.&lt;/p&gt;
&lt;p&gt;A lot of examples are available &lt;a href=&quot;http://sigmajs.org/examples.html&quot;&gt;&lt;strong&gt;in this page&lt;/strong&gt;&lt;/a&gt;, and here is a sample:&lt;/p&gt;
&lt;div&gt;
  &lt;button class=&quot;btn&quot; id=&quot;stop-layout&quot;&gt;Stop Layout&lt;/button&gt;
  &lt;button class=&quot;btn&quot; id=&quot;rescale-graph&quot;&gt;Rescale Graph&lt;/button&gt;
&lt;/div&gt;
&lt;div id=&quot;sigma-instance&quot; style=&quot;display:block;margin-left:auto;margin-right:auto;width:100%;height:400px;border:1px #ccf solid;&quot;&gt;&lt;/div&gt;
&lt;script src=&quot;/static/js/sigma.min.js&quot;&gt;&lt;/script&gt;&lt;script src=&quot;/static/js/sigma.forceatlas2.js&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot;&gt;
function init() {
  // Instanciate sigma.js and customize it :
  var sigInst = sigma.init(document.getElementById('sigma-instance'));

  // Generate a random graph with :
  //   . N nodes
  //   . E edges
  //   . C clusters
  //   . d the proportion of edges that connect two nodes
  //     from the same cluster
  var i, N = 300, E = 1000, C = 5, d = 0.5, clusters = [];
  for(i = 0; i &lt; C; i++){
    clusters.push({
      'id': i,
      'nodes': [],
      'color': 'rgb('+Math.round(Math.random()*256)+','+
                      Math.round(Math.random()*256)+','+
                      Math.round(Math.random()*256)+')'
    });
  }

  for(i = 0; i &lt; N; i++){
    var cluster = clusters[(Math.random()*C)|0];
    sigInst.addNode('n'+i,{
      'x': Math.random(),
      'y': Math.random(),
      'size': 0.5+4.5*Math.random(),
      'color': cluster['color'],
      'cluster': cluster['id']
    });
    cluster.nodes.push('n'+i);
  }

  for(i = 0; i &lt; E; i++){
    if(Math.random() &lt; 1-d){
      sigInst.addEdge(i,'n'+(Math.random()*N|0),'n'+(Math.random()*N|0));
    }else{
      var cluster = clusters[(Math.random()*C)|0], n = cluster.nodes.length;
      sigInst.addEdge(i,cluster.nodes[Math.random()*n|0],cluster.nodes[Math.random()*n|0]);
    }
  }

  // Start the ForceAtlas2 algorithm
  // (requires &quot;sigma.forceatlas2.js&quot; to be included)
  sigInst.startForceAtlas2();
  var isRunning = true;
  document.getElementById('stop-layout').addEventListener('click',function(){
    if(isRunning){
      isRunning = false;
      sigInst.stopForceAtlas2();
      document.getElementById('stop-layout').childNodes[0].nodeValue = 'Start Layout';
    }else{
      isRunning = true;
      sigInst.startForceAtlas2();
      document.getElementById('stop-layout').childNodes[0].nodeValue = 'Stop Layout';
    }
  },true);
  document.getElementById('rescale-graph').addEventListener('click',function(){
    sigInst.position(0,0,1).draw();
  },true);
}

if (document.addEventListener) {
  document.addEventListener('DOMContentLoaded', init, false);
} else {
  window.onload = init;
}
&lt;/script&gt;&lt;h3&gt;The main update&lt;/h3&gt;
&lt;p&gt;SiGMa&amp;#8217;s paradigm was to draw everything all the time : &amp;#8220;&lt;em&gt;if it goes laggy, well, no surprise, it will be laggy all the time&lt;/em&gt;&amp;#8221;. When I decided to write a new version in JavaScript, it was useless to continue that way. Indeed, having a freezing JS script running will make the whole page navigation freezing, which is not acceptable.&lt;/p&gt;
&lt;p&gt;So, using &lt;a href=&quot;http://labs.linkfluence.net/&quot;&gt;Linkfluence&lt;/a&gt; and especially &lt;a href=&quot;http://antonin.rohmer.free.fr&amp;#39;s&quot;&gt;Antonin Rohmer&lt;/a&gt; experience, I started to write sigma.js such as it is possible to draw nodes and/or edges and/or labels pseudo-asynchronously. More precisely, it is possible to inject frames while drawing a layer. That makes possible to draw pretty large graphs without freezing the browser. You can take a deeper look at the code &lt;a href=&quot;https://github.com/jacomyal/sigma.js/blob/master/src/public/chronos.js&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;What is left to do&lt;/h3&gt;
&lt;p&gt;My main motivation while developing sigma.js was to be able one day to manipulate and explore a graph on a tactile support (drag and drop, two fingers rotations, &lt;em&gt;Minority Report&lt;/em&gt; styled interfaces&amp;#8230;). I do not have any tactile support to test yet, but I still expect to implement these features soon.&lt;/p&gt;
&lt;p&gt;The other features to come will depend on users, if there are any.&lt;/p&gt;
&lt;h3&gt;Alternatives&lt;/h3&gt;
&lt;p&gt;I have seen a lot of great tools to draw graph recently, some more customizable and with better APIs than sigma.js:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://gephi.org/2011/gsoc-mid-term-graphgl-network-visualization-with-webgl/&quot;&gt;GraphGL&lt;/a&gt; is a great library using Three.js and WebGL to draw graphs&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://mbostock.github.com/d3/ex/force.html&quot;&gt;d3.js&lt;/a&gt; is an amazing tool to manipulate data, and includes features to draw graphs with &lt;span class=&quot;caps&quot;&gt;SVG&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/raphv/gexf-js&quot;&gt;gexf.js&lt;/a&gt; is another great tool for Gephi users to expose their works on the web &amp;#8211; with a built-in interface that makes it really friendly to use&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Thanks&lt;/h3&gt;
&lt;p&gt;Finally, it took me awhile to design the &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;, thanks to &lt;a href=&quot;http://www.medialab.sciences-po.fr/fr/team/mathieu-jacomy/&quot;&gt;Mathieu Jacomy&lt;/a&gt; for his help, since he kind of started using sigma.js before I even started to decide anything about what had to be public, and tweaked the whole code, making me aware of which features he wanted to see available.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>SiGMa-client demo</title>
      <link>http://ofnodesandedges.com/2011/10/06/sigma-client-demo.html</link>
      <pubDate>Thu, 06 Oct 2011 00:00:00 PDT</pubDate>
      <author>alexis.jacomy@gmail.com (Alexis Jacomy)</author>
      <guid>http://ofnodesandedges.com/2011/10/06/sigma-client-demo</guid>
      <description>&lt;p&gt;I just added on this blog a demo of &lt;a href=&quot;http://www.github.com/jacomyal/SiGMa-client/&quot;&gt;SiGMa-client&lt;/a&gt;, with some &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; interface to activate the different features already accessible from JavaScript. I will continue to add on this demo the new SiGMa-client features along its development. Also, these features are described more precisely in &lt;a href=&quot;http://github.com/jacomyal/SiGMa-client/wiki&quot;&gt;SiGMa-client&amp;#8217;s wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The demo is &lt;a href=&quot;http://ofnodesandedges.com/static/sigma&quot;&gt;&lt;b&gt;here&lt;/b&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Feel free to tell me if you see any missing feature or is you meet any issue!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ofnodesandedges.com/static/sigma&quot;&gt;&lt;img style=&quot;display:block;margin-left:auto;margin-right:auto;width:80%;border:1px #ccf solid;&quot; src=&quot;/static/images/sigma_demo_screenshot.PNG&quot; title=&quot;SiGMa-client demo&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>First SiGMa generic client release</title>
      <link>http://ofnodesandedges.com/2011/09/19/sigma-generic-client.html</link>
      <pubDate>Mon, 19 Sep 2011 00:00:00 PDT</pubDate>
      <author>alexis.jacomy@gmail.com (Alexis Jacomy)</author>
      <guid>http://ofnodesandedges.com/2011/09/19/sigma-generic-client</guid>
      <description>&lt;p&gt;I just finished a first version of the generic &lt;a href=&quot;https://github.com/jacomyal/SiGMa-client#readme&quot;&gt;SiGMa Flash client&lt;/a&gt;, my graph visualization web application. Since the release of &lt;a href=&quot;http://stargit.net&quot;&gt;Stargit&lt;/a&gt; some months ago, I wanted to write a generic version of the Stargit client, fed from JavaScript, and configured with a simple &lt;span class=&quot;caps&quot;&gt;JSON&lt;/span&gt; file, the main goal is to make it usable in custom applications without having to compile in Flash Builder.&lt;/p&gt;
&lt;h3&gt;How to use it&lt;/h3&gt;
&lt;p&gt;There are three ways to interact with SiGMa:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;First, it is possible to set most of the initial display settings, like the default nodes color, edges color labels font, and much more.&lt;/li&gt;
	&lt;li&gt;Also, it is possible to add callbacks on specific user actions. Currently, the implemented ones are &amp;#8216;onClickNodes&amp;#8217;, &amp;#8216;onOverNodes&amp;#8217; and &amp;#8216;onReady&amp;#8217; (called when SiGMa ended its loading/initialization).&lt;/li&gt;
	&lt;li&gt;Finally, a lot of SiGMa&amp;#8217;s methods can be directly called from JavaScript.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The initial settings and the callbacks are set by the user in a &lt;span class=&quot;caps&quot;&gt;JSON&lt;/span&gt; config file, while SiGMa&amp;#8217;s methods are (or will be) all described in the documentation.&lt;/p&gt;
&lt;h3&gt;Example&lt;/h3&gt;
&lt;p&gt;I wrote back in JavaScript the AS3 code from my last post to generate a random graph (just added the orphan nodes removal). Then, I wrote a function, &amp;#8216;feedSiGMa()&amp;#8217; to give the graph to SiGMa:&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/1225447.js?file=sigma-random.js&quot;&gt;&lt;/script&gt;&lt;p&gt;Also, I just modified some initial settings (colors and font), and added my three callbacks in my config file. So, SiGMa will call &amp;#8216;feedSiGMa()&amp;#8217; after its loading, and everytime you click the button. The callbacks on mouse interaction with the nodes just display the node IDs in the console of your browser:&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/1225449.js?file=config.json&quot;&gt;&lt;/script&gt;&lt;p&gt;About the &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; code, SiGMa, as any other Flash application, can be embed with the &amp;#8216;object&amp;#8217; and &amp;#8216;embed&amp;#8217; tags:&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/1226050.js?file=index.html&quot;&gt;&lt;/script&gt;&lt;p&gt;Finally, here is the result (if nothing is displayed or if the graph does not move, try clicking the button):&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/static/sigma-random/sigma-random.js&quot;&gt;&lt;/script&gt;&lt;button id=&quot;random&quot; type=&quot;button&quot; onclick=&quot;feedSiGMa();&quot;&gt;Click to generate a random graph&lt;/button&gt;
&lt;div id=&quot;SiGMa-container&quot; style=&quot;height:400px;width:100%;&quot;&gt;
&lt;p&gt;&lt;object id=&quot;SiGMa-client&quot; width=&quot;100%&quot; height=&quot;98%&quot;&gt;&lt;br /&gt;
&lt;param name=&quot;movie&quot; value=&quot;/static/sigma-random/sigma.swf?configPath=/static/sigma-random/config.json&quot;/&gt;&lt;br /&gt;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;br /&gt;
&lt;embed name=&quot;SiGMa-client&quot; src=&quot;/static/sigma-random/sigma.swf?configPath=/static/sigma-random/config.json&quot; allowScriptAccess=&quot;always&quot; width=&quot;100%&quot; height=&quot;98%&quot;&gt;&lt;br /&gt;
&lt;/embed&gt;&lt;br /&gt;
&lt;/object&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I started documenting more precisely the different methods and initial parameters available in the &lt;a href=&quot;https://github.com/jacomyal/SiGMa-client/wiki&quot;&gt;wiki&lt;/a&gt;. And of course, don&amp;#8217;t hesitate to use it, give a feedback or &lt;a href=&quot;https://github.com/jacomyal/SiGMa-client/issues&quot;&gt;report issues&lt;/a&gt;!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Experimenting Jangaroo with SiGMa</title>
      <link>http://ofnodesandedges.com/2011/09/10/sigma-jangaroo.html</link>
      <pubDate>Sat, 10 Sep 2011 00:00:00 PDT</pubDate>
      <author>alexis.jacomy@gmail.com (Alexis Jacomy)</author>
      <guid>http://ofnodesandedges.com/2011/09/10/sigma-jangaroo</guid>
      <description>&lt;p&gt;I just tried &lt;a href=&quot;http://www.jangaroo.net/home/&quot;&gt;Jangaroo&lt;/a&gt; to obtain quickly a Flash-less version of &lt;a href=&quot;http://github.com/jacomyal/SiGMa-core&quot;&gt;SiGMa&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;How to compile SiGMa-core with Jangaroo&lt;/h3&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.oracle.com/technetwork/java/javase/downloads/index.html&quot;&gt;Install &lt;span class=&quot;caps&quot;&gt;JDK&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://maven.apache.org/download.html#Installation&quot;&gt;Install Maven 3&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.jangaroo.net/tutorial/&quot;&gt;Follow the Jangaroo tutorial&lt;/a&gt; to become familiar with it (eventually &lt;a href=&quot;https://github.com/fwienber/flash-lines&quot;&gt;get more familiar with Jangaroo&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.github.com/jacomyal/SiGMa-core&quot;&gt;Clone SiGMa-core repository&lt;/a&gt; and copy &lt;b&gt;SiGMa-core/src/com/&lt;/b&gt; into &lt;b&gt;src/main/joo/&lt;/b&gt;&lt;/li&gt;
	&lt;li&gt;Create a file &lt;b&gt;Main.as&lt;/b&gt; inside &lt;b&gt;src/main/joo/&lt;/b&gt; and write your code&lt;/li&gt;
	&lt;li&gt;Create a file &lt;b&gt;index.html&lt;/b&gt; inside &lt;b&gt;src/main/webapp/&lt;/b&gt; and write your &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; file&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;My use example&lt;/h3&gt;
&lt;p&gt;I started back from the most basic example at SiGMa-core &lt;a href=&quot;https://github.com/jacomyal/SiGMa-core#readme&quot;&gt;&lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt; page&lt;/a&gt;, modified the code to create a random graph of N nodes and M edges, and then started the &lt;a href=&quot;http://gephi.org/2011/forceatlas2-the-new-version-of-our-home-brew-layout/&quot;&gt;ForceAtlas 2 algorithm&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is the src/main/joo/Main.as file:&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/1208588.js?Main.as&quot;&gt;&lt;/script&gt;&lt;h3&gt;Result&lt;/h3&gt;
&lt;p&gt;And here is the result:&lt;/p&gt;
&lt;div style=&quot;display:block;margin-left:auto;margin-right:auto;width:600px;height:400px;background:#EEE;border:1px #E0E0E0 solid;&quot; id=&quot;jangaroo-sigma&quot;&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/static/joo/jangaroo-application.js&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot;&gt;joo.classLoader.run(&quot;joo.flash.Run&quot;,&quot;jangaroo-sigma&quot;,&quot;Main&quot;);&lt;/script&gt;&lt;p&gt;I did not go further than this simple example. Jangaroo is still missing some classes and features (especially about the TextFields management, Vectors, etc&amp;#8230;), but there is a lot of interesting things about it:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Most classes from the AS3 &amp;#8216;flash&amp;#8217; package are already implemented&lt;/li&gt;
	&lt;li&gt;The transformation seems pretty smart (the TextFields are transformed into span tags, the Graphics are transformed into canvas tags)&lt;/li&gt;
	&lt;li&gt;The generated JavaScript sources look pretty readable&lt;/li&gt;
	&lt;li&gt;The whole project is open-source (Apache license), and seems to be actively maintained&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, since the strong/weak spots are not the same with Flash compilation and Jangaroo compilation, and since the TextFields are not supported as well with both technologies, I do not think that Jangaroo is the best solution to port AS3 sources to JS without trouble.&lt;/p&gt;
&lt;p&gt;But still, it looks pretty great, the &lt;a href=&quot;http://www.jangaroo.net/applications/&quot;&gt;examples&lt;/a&gt; work really well, and &lt;b&gt;Jangaroo&lt;/b&gt; might be a really good and promising answer to develop Flash-less Web applications without having to throw your whole AS3 sources away.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>StarGit</title>
      <link>http://ofnodesandedges.com/2011/06/20/stargit.html</link>
      <pubDate>Mon, 20 Jun 2011 00:00:00 PDT</pubDate>
      <author>alexis.jacomy@gmail.com (Alexis Jacomy)</author>
      <guid>http://ofnodesandedges.com/2011/06/20/stargit</guid>
      <description>&lt;p&gt;I write some graph visualization tools for around two years now, and I missed several occasions to work fully on a specific case &amp;#8211; most of the time because the tools I had with me at the time did not fit exactly to the dataset. But that time I have been luckier: I was finishing a first version of my new &lt;a href=&quot;https://github.com/jacomyal/SiGMa-core&quot;&gt;SiGMa core&lt;/a&gt;, when I wanted some data to play with. I found the @psychemedia&amp;#8217;s &lt;a href=&quot;http://ouseful.open.ac.uk/twitter/friendviz.html&quot;&gt;Friendviz&lt;/a&gt; (Twitter network visualized with &lt;a href=&quot;http://vis.stanford.edu/protovis/&quot;&gt;Protovis&lt;/a&gt;), and tried to feed my graph visualization core with Web APIs.&lt;/p&gt;
&lt;p&gt;Especially, I played with Github &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;, and I showed it to a colleague, &lt;a href=&quot;http://lumberjaph.net&quot;&gt;Franck&lt;/a&gt;, who made at &lt;a href=&quot;http://linkfluence.net&quot;&gt;linkfluence&lt;/a&gt; last year a really nice &lt;a href=&quot;http://lumberjaph.net/graph/2010/03/25/github-explorer.html&quot;&gt;visualization&lt;/a&gt; of the followers network of Github. So, I showed my prototype to him, and he told me that he was actually not only reprocessing Github&amp;#8217;s data to do a new visualization, but also that he was looking for an interactive way to explore his results. Here is how we started to work on &lt;a href=&quot;http://stargit.net&quot;&gt;&lt;strong&gt;StarGit&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I will focus here on the choices we made about ergonomy and interface. If you are interested about the data or the server-side technologies, you should take a look at &lt;a href=&quot;http://lumberjaph.net/community/2011/06/20/stargit.html&quot;&gt;Franck&amp;#8217;s blog post&lt;/a&gt; about StarGit.&lt;/p&gt;
&lt;p&gt;&lt;img style=&quot;display:block;margin-left:auto;margin-right:auto;width:687px;&quot; src=&quot;/static/images/stargit_screenshot.png&quot; title=&quot;StarGit&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;What we wanted:&lt;/h2&gt;
&lt;p&gt;The goal was to make possible for a Github user to see his ego-centered network, like with &lt;a href=&quot;http://inmaps.linkedinlabs.com/&quot;&gt;InMaps&lt;/a&gt; for LinkedIn users. Since Franck is an active user of Github (which is not my case, I&amp;#8217;ve never contributed to any project), he wanted to observe how programmers do collaborate with others, instead of the social network side of Github. So, lot of users will not appear on Stargit (including me, actually). But at the same time, that makes most of the networks definitely smaller than if it was followers networks, and made possible to use a client-side graph managment, instead of a server-side application that processes the networks, like with InMaps.&lt;/p&gt;
&lt;h2&gt;The graph:&lt;/h2&gt;
&lt;p&gt;It was not that easy to obtain for each user a graph that is significant, and also not to big to be well processed by the client application. Even with only the collaborations in the network, some &amp;#8220;super-users&amp;#8221; were still making some networks totally unbalanced. And also, lot of users do not have enough connections to make the graph interesting.&lt;/p&gt;
&lt;p&gt;So, to make the networks relevant to watch:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;We include the frontiers in the graphs. So basically, a user will find his neighbors and their neighbors in his network.&lt;/li&gt;
	&lt;li&gt;To avoid the &amp;#8220;star effect&amp;#8221; (if I have a neighbor who has 1000 neighbors I don&amp;#8217;t care about, they will look like a huge star on my network, which is not what I want), we remove all the leaves (nodes with only one neighbor).&lt;/li&gt;
	&lt;li&gt;We blacklisted the 100 biggest users, until we find a way to integrate them in the networks relevantly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The interface:&lt;/h2&gt;
&lt;p&gt;The best Web interfaces I know to explore networks are most about visualizing a map (like the excellent &lt;a href=&quot;http://us.linkfluence.net/insights-2-0/atlas/&quot;&gt;linkfluence maps interface&lt;/a&gt;, or the recent Flashless &lt;a href=&quot;http://labs.knowtex.com/ndm11/tweetview.html#carto&quot;&gt;Raphael Velt&amp;#8217;s maps interface&lt;/a&gt;). The network has already its shape, users zoom and move the map like with Google Maps, and a caption is here to explain what mean the different graphic components (nodes sizes, nodes colors, etc).&lt;/p&gt;
&lt;p&gt;At the same time, I personally enjoy playing with Gephi and chosing what I want to see in my graphs. For example, in Stargit, I mean that the user might like to see by himself if his nearest neighbors share his main programming language, or his country, or a specific project&amp;#8230;&lt;/p&gt;
&lt;p&gt;So, here is how works Stargit interface:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;An input field is at the same time the title of the network, and one way to change the network, by writing another user&amp;#8217;s login.&lt;/li&gt;
	&lt;li&gt;The nodes color and size are defined by two different comboboxes, and the user can chose what he wants to see in the network.&lt;/li&gt;
	&lt;li&gt;When the user rolls the mouse over a node, the main information about this node (avatar, website, country, etc) will be displayed at the bottom-middle of the screen.&lt;/li&gt;
	&lt;li&gt;When a user clicks on a node, it will display the network centered on this node.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;About the layout algorithm, I implemented in SiGMa with a little help from my brother his fresh new &lt;a href=&quot;http://vimeo.com/24513719&quot;&gt;ForceAtlas2&lt;/a&gt;, also available in Gephi (with a nice &lt;a href=&quot;http://gephi.org/2011/forceatlas2-the-new-version-of-our-home-brew-layout/&quot;&gt;blog post&lt;/a&gt; about it). I will tell more about this new SiGMa core in a later post. The sources of the Flash project are available &lt;a href=&quot;https://github.com/jacomyal/SiGMa-StarGit&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here it is, I hope you will enjoy browsing this huge and so much interesting database that is Github, with &lt;a href=&quot;http://stargit.net&quot;&gt;&lt;strong&gt;Stargit&lt;/strong&gt;&lt;/a&gt;!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Blog update</title>
      <link>http://ofnodesandedges.com/2011/06/19/blog-update.html</link>
      <pubDate>Sun, 19 Jun 2011 00:00:00 PDT</pubDate>
      <author>alexis.jacomy@gmail.com (Alexis Jacomy)</author>
      <guid>http://ofnodesandedges.com/2011/06/19/blog-update</guid>
      <description>&lt;p&gt;Hi! Here is the fresh new version of OfNodesAndEdges.com, my blog about &lt;strong&gt;graph visualization&lt;/strong&gt;, back on stage! I did not have the time to migrate the old posts, I will try to do that as soon as possible.&lt;/p&gt;</description>
    </item>
    

  </channel> 
</rss>