Recurring thought I’ve been having: The tools I mo...
# linking-together
j
Recurring thought I’ve been having: The tools I most rely on organise my workspace in lists. ≡ I sometimes wish they could instead organise it in graphs. ፨ Examples: • The text editor organises my code into lines. • The file system organises my files in lists of files within hierarchical folders. • The task tracker organises my tasks into categorised lists. The list ordering is often tedious and inefficient to navigate. It forces me to switch back and forth rapidly between vastly separated areas, either with my eyes or with my eyes and mouse/keyboard. It’s tricky or impossible to get a view of all the elements I am working with at the same time. When in “designer-mode” I often resort to diagramming (either paper or virtual). A diagram lets me position the elements the way I’m actually thinking about them, with closely related elements close to eachother and less-related elements farther apart. If an element has several closely related elements, it’s easy to draw them adjactent to eachother, whereas this wouldn’t be possible if they had to be in a flat list. In an era of 3D virtual spaces and 3D printing, I find it ironic and aggravating that the typical programmer doesn’t even get a 2D, let alone 3D, view of their environment, but is still held down to 1D list-ual views! lol
👍 2
k
Maybe your text editor just needs hyperlinks? This thread from a couple of weeks ago seems relevant: https://futureofcoding.slack.com/archives/C5U3SEW6A/p1544131462015300
s
@Jonathan How do you feel about trees instead of full-blown graphs?
k
Ah, I just found and published my original message about using
ctags
to generate hyperlinks in my editor: http://akkartik.name/post/2000-03-06-20-15-52_001-soc (/cc @interstar)
I think the most memorable feature of the original Light Table was that each function got a card, and you could reorganize cards on your screen any time you liked.
s
I'm working on a system that will basically be a 2.5D tree editor that uses 6DOF controllers, some parts of it (tbd) will also be fully 3D graphs or 3D visualizations\editors embedded as tree nodes
👍 5
j
@Jonathan How do you feel about trees instead of full-blown graphs?
I thought about this a bit, but I don’t think trees would cut it. It’s impossible to visually represent many-to-many relationships in a tree. Any node can only have one parent. Thus, the relationship is always one-to-many.
s
I think with full 3D occlusion becomes a problem, for example I think it'd be really interesting to work with a 3D cellular automata system (think minecraft but every block is fully programmable) but how do you easily "see" inside of a giant cube, instead of literal spaghetti code like you get with node-based systems you'd end up with literal black boxes 🙂
j
Maybe your text editor just needs hyperlinks?
I kind of already have those, at least in my IDE, in the form of the ‘Go to Definition’ or ‘Find References’ commands or similar. Problem is, I still have to make this jarring transition between the thing I’m looking at now and the thing I want to navigate to. What I really want is to see those two things at the same time in the same view and in relation to eachother. I want my eye to be able to follow them, rather than having to clunkily tell the machine to navigate to them. My eyes are already highly adapted to following patterns and paths, I’d rather use that physiological capability.
👍 1
each function got a card, and you could reorganize cards on your screen any time you liked
/That/ sounds closer! I’ll check out LightTable.
k
I've been noodling for a few minutes on a text editor laid out as an infinite 2D grid of cards, one card per function, with the ability to move cards around at will. Kinda like a cross between Prezi and this mockup tool a coworker of mine uses. InVision? Something like that. In this metaphor you could use the Z axis or tab for the history of a function, with keyboard shortcuts to say "show me the entire layout at the current version of this card" and "undo that". Might address the occlusion issue with 3D UIs. Having lots of cards on screen may also help with the issue of hyperlinks you point out: clicking on one maybe only moves or pushes out one card, keeping the rest fairly stable visually. Does that seem helpful at all?
Here's a link to the Light Table prototype I was thinking of: http://www.chris-granger.com/2012/08/17/light-table-reaches-010. They had several before and many since, and this particular feature seems to have fallen out of favor right now:

https://www.youtube.com/watch?v=8C3yTweZOIU

(via http://docs.lighttable.com/tutorials/full)
👍 1
s
I find it ironic and aggravating that the typical programmer doesn’t even get a 2D, let alone 3D, view of their environment, but is still held down to 1D list-ual views! lol
I agree. Based on what you said Nelson's ideas of 'visible connection' for hypermedia comes to mind. I suppose it is ironic that large, linear blobs of text are the primary interface of programming a dynamic, interactive machine. There is a fluidity aspect - e.g. navigating a list seems easier than clicking around in a graph - but this is a UX issue. A deeper issue might be that we need to draw a distinction between the presentation vs the deeper model of structure. Much information we deal with are cross connected clusters of entities (nothing short of a graph really works), but currently we limit ourselves to one or two projections, while mentally simulating other relationships.
I am anti file and anti file system in general - these impose strict hierarcy and linear order.
👍 4
m
I agree with this. Files impose arbitrary linearity when there's no one. I think Smalltalk solves it to a great extent: classes and methods are categorized and can be reorganized, and you have several different views on them.
👍 3