I'm still thinking a lot about what a "point liter...
# devlog-together
i
I'm still thinking a lot about what a "point literal" or a "vec literal" means in the context of visual programming. In text we have "string literal", it has a bunch of affordances. In visual/spatial/tangible/etc programming, we'd probably want other primitive types with their own set of affordances. So point and vec, obviously. I wonder what else we'd want, and how it would look and act.
t
grammar of graphics makes me think about data spaces. a dataset occupies a place within a data space, which is not a million miles from a table (dataset) SQL schema (space). You can look at a dasaset as a tabular dataframe OR slice into a million possible configuration of a data chart. So dataframe or chart are projections of the same underlying dataset. I quite like things that allow you to view the same thing from different angles. Your examples make me think you are thinking lower level but I do think its more user friendly to think at the higher level.
i
I'm thinking of "point literal" as, like, a little ball I can hold in my hand, and "vec literal" as an arrow between two balls I can juggle.
t
ah right, useful marks in a space. Then I would say vectors/arrows have a start and end, but its also useful to have a infinite line (a ruler?) for binary space partitioning. Is a circle a thing you consider in scope or is that a composite? its a point + radius, could be defined by just an arrow though
actually even the rule is specified by an arrow/vec, its pretty strong that one.
I think for visual programming maybe there is a lot of interesting typed spatial operators like locus so a point+ locus:1d = circle. And one you have areas then there is interesting things like is the point inside the area or intersections of areas (binary spatial operators) to create new areas with stranger shapes. Maybe a missing low level one is a curve, that has a bit more dimensionality than a vec and can represent things otherwise unrepresentable.
r
One example I remember from several years ago was 'bouncy numbers', which are these oscillating points. In general I'm a fan of the proliferation of primitive visual/dynamic types because even though you can represent them in text they are really their own thing. https://mobile.x.com/prerationalist/status/1440442305710723072
i
Sidebar: Is there a good way to view content on X without logging in?
j
(Probably only works for things from the pre-X days...)
i
Ah that's great, thanks. Really neat idea.
k
i
Ah that's even better. Thank you!
m
in terms of "ui widget for vectors" it needs to support precise editing (like plain text allows), but maybe limit input to valid values, e.g. dropdown with ints only, or enum, or range. Visualization "token" is trickier, because you would not be able to see a difference between 48º and 49º lines of the size of, say, capital letter. (can't find demo of dev env with clock-like widgets for pointing to references spatially, but those are often... not useful to look at)
actually, what does "literal" even mean in visual prog context? "dedicated representation"? "ease of creation via user input"? "no indirection", but GUI is already indirection... this might have something relevant https://vis.csail.mit.edu/pubs/varv.pdf
i
The "what does literal even mean" question is why I'm so obsessed with this. As for precise editing, yes.. maybe. Sometimes. It depends, right? Compare with numbers (floats, esp), rather than strings, in this regard.
m
wiki's definition boils down to "*literal* is a textual representation", huh. in that sense – vpl vec literal is just a ui widget, regardless of what it looks like.
i
Text is a UI.
Also, choice of representation matters tremendously.
m
as soon as you transition from text file to "graphical canvas" – "correct" choice of default widget becomes less critical, as you already require more interaction from user, so basically you can have widget with 10 tabs where each is different projection with different amount of controls. And you are no longer constrained with "what user has on the keyboard to fast/conveniently replace current literal text fragment with"
(which is silly but very real obstacle for APL adoption growth)
f
So interesting but I have no clue what you’re hinting at. Do you expect textual representation or “graphical language”?
i
Florian — not sure who your question is addressed to.
f
Phew you went into full detail in the podcast. I now better understand what string literal means. Would the equivalent in visual programming be 1) A circle representing a drag handle 2) A literal circle, as in, graphical shape drawn to the end user?
On a sidenote: I find it interesting how electrical engineering has these standards for drawing schematic circuits and people seem to have lots of opinions on how to draw them well. https://learn.sparkfun.com/tutorials/how-to-read-a-schematic/all
Also thinking about the difference between icon, index, symbol. A literal heart represents the human heart 🫀 vs the abstract heart ❤️ used to convey like/favorite.
g
A side note / observation: electronics schematics represent behaviour that is very different from what synchronous, sequential programming languages represent. Any 5yo, any CEO at a whiteboard, any EE, etc. knows that a closed figure represents an asynchronous unit and that schematics represent inherent, massive parallelism. Programmers tend to think in terms of clockwork, synchronous, sequential, blocking functions which is the opposite of what is drawn on electronics schematics.
👀 1
i
@Florian Schulz I'm experimenting with 1. The tangible things I'm programming with form the "source code" of my program. So while I could add some way to display them to the end user directly, for now I'm just using them to measure and calculate and then (indirectly) perform drawing operations. Like, the visual program is abstract, edited separately from the world of UI. (This is fun for me because historically I've been all "there should be no distinction between program definition and runtime environment")
👀 2
🧠 1
t
@Ivan Reese I have been working on this idea for a while: What if I use a diagram from Category theory to display and manipulate source code. Reading source code and writing source code through the diagram. I have been following a little bit the discussions here regarding visual programming but not extensively. The point is that when you describe a category you need to define the composition method, ie how two arrows compose in the diagram and what are the objects (points in the diagram). It is all based on the fact that category theory can describe any abstraction. On top of that it allows you to have some formal ways to move between different categories or between levels of abstraction.
👀 1
Maybe i should put something up to make it a bit more tangible because what i just described is probably too broad.
However to just give some relative perspective for my categorical diagram, the point is really whatever i need it to be and the important thing are the arrows in the diagram. Say the category of types and functions contains types as objects, then my objects are types. Say i move up a level in the abstraction ladder, the objects could be classes in a dependency graph and the arrows the dependency direction. The points themselves are less important, as basically they just define a start and an end for the arrow, which is the important thing.
j
compositionality is rad but it leads in all sorts of directions!
t
@Jasmine Otto is think the confusers and the hallucinators were illuminating there. I was just calling them monoids over source code or the diagram, optimisations or transformations.
What initially made me post here now is the “there should be no distinction between program definition and runtime environment”
The semiotics one is really on point. Thanks for these links
🙌 1
m