Xebece
Yesterday I received a 20$ donation for my old program Xebece, a nice little tool for visualizing large sets of information. That is really nice. It made me hack on it again immediately (you see, I’m completely reward-driven
).
I was really shocked when I looked at all this code. It’s only 3 or 4 years ago when I wrote this, but man, did I write crappy code back than. And I remember I did it with the best effort to actually produce good code. Duh. On the other hand, it’s really amazing what I learned in all this time. Most of this can be credited to my work on GNU Classpath (which I actually started because I wanted Xebece to run on a free Java platform).
There’s still many ideas floating in my head for Xebece, when I find some free time *cough* I gotta implement:
- An abstraction for the tree view, to allow alternative renderers. More specifically, I’d like to re-introduce the hypertree library. The first versions of Xebece (actually, Ontographics back then) where written against this library, but removed in favor of Prefuse because the hyperbolic tree rendering is patented in the US. However, I think it is the superior renderer, it is GPL just like Xebece and I’m a co-maintainer of this project too, so I have more control over the code (yeah yeah). OTOH, Prefuse is some BSD license (the version in Xebece is actually the dreaded 4 clause license with advertising clause which actually makes it non-free, but it seems like they changed it to a free 3-clause BSD lately, together with reworking all of the API to be completely incompatible with my code, hrmpf).
- Throw out the weird text/image blocks on the right pane, and replace it with a simple HTML editor. Same practical purpose, but much more straightforward to use (I hope).
- Allow interconnecting links from one tree node to another (which effectively makes the tree a graph), possibly augmented by special URLs in the HTML pane.
- Speaking of URLs, using a HTML editor would also allow external web URLs in the information panel on the right.
- Easy to use Applet export which would create an applet bundle out of the current project for simple uploading on a webserver.
Phew, quite a lot of ideas. And most of them were floating around for 2 years already and I never got around to implement them. Let’s see how far I get now.
August 4th, 2007 at 6:01 am
Hi,
Interesting project. Does it handle dot files? A friend of mine is having trouble visualizing graphs of C++ programs (most tools don’t scale to it).
See some examples at
http://www.cs.ru.nl/~tews/olmar/
August 5th, 2007 at 5:33 am
Hey Roman, congratulations for the donation! I know this code-review problem very well but as you said, it’s an indicator for the increase of learning, and as we know informatics-people always have to be lifetime-students ;-).
Good to know about your reward-addiction, so whenever i need a special feature in your masterpiece Xebece and don’t want to (or even be able to) code it myself, i know what to do now :-P.
Here’s a suggestion (no sponsored request for now ;-)): Some kind of “tag-cloud mode”, where the font-size of each node varies depending on the amount of child nodes would be a nice feature i think.
August 17th, 2007 at 2:43 am
Well, I have to say I love this little app. Part of me wishes it would do something like export to an .swf or some format easily embedded into a webpage or presentation. It offers an immense amount of potential, especially if it could import and render from a .csv or from an sql result (I am likely far ahead of myself).
January 11th, 2008 at 12:07 am
“Easy to use Applet export which would create an applet bundle out of the current project for simple uploading on a webserver.”
… is there currently any (hard?) way to export to an applet ?
January 11th, 2008 at 12:08 pm
Yes, you’d have to extract a couple of classes (the applet class plus some others), the datafile, bundle it up on a webserver and create the right combination of applet tags and parameters to get it running. That’s how I did it on the website. If you are adventurous, then have a look at org.kennke.xebece.XebeceApplet .