Hacker News new | ask | show | jobs
by zandorg 5523 days ago
It's hard to explain, so please allow a bit of room for error in my post.

Before I start, you can get it here: http://sourceforge.net/projects/gzigzag/files/gzigzag/0.6.3/...

You have to use it (in Gzz) to understand it.

It's like Excel in that there are connected 'cells' (called that in Excel and Zigzag), but instead of being in a grid, they can be connected via a link to another cell. A link is either - or +, and the link has a dimension (eg, d.1 or d.name, or d.date). A cell has a string of text as its value.

So say we have 2 cells (which are numbered uniquely), cell 1 and 2. "1+d.1" points to 2, while "2-d.1" points to 1. Cell 1's text is "Here" and cell 2's text is "There".

The final element is that there is a cursor, which sits on a cell, and the program follows all the links from the cursor and draws them onto a canvas, and then shows it.

The user interface lets you make links, break links, edit the text in the cell, delete a cell, and show cells adjacent to the cursor cell. Another aspect is that the screen draws 3 dimensions, and you can toggle the ones shown. This is because showing every dimension is impossible, so we view a subset. It's not a static environment: rather, you make new cells, link them all together, etc.

http://xanadu.com/zigzag/ZZdnld/zzRefDef/pic24-bettersharedl...

My work was making a C version. Existing versions were a Perl version (the original prototype) and Gzz (an excellent Java version).

I should have improved Gzz instead of making my own version, but porting it from Perl to C was a good learning experience.

I then made a Lisp version which works great.

Finally, one challenge was getting Ted to accept my innovations and new features, but that isn't easy, so I had to stop working on my version of Zigzag, and maybe even stop using it.