Mariano Guerra 2022-04-25 14:03:39 Jason Morris 2022-04-25 18:12:54 Very useful idea. In some instances the lack of semantic meaning from mutating the dimension, such as order, is "correct", if you want to visually communicate that order is irrelevant. So not using a dimension may be desirable. Making visual interconnections provide more information by providing shapes also runs into problems when using un-typed or dynamically typed language. Doing it in typed languages, you quickly run out of useful shapes. I've seen people try to use color to solve that problem, and it's visually jarring.
Jason Morris 2022-04-25 18:15:49 It does make me wonder whether it would be possible to eliminate fixed positions, which are meaningless in my tool, and have the pieces migrate visually to show their network of relationships.
William Taysom 2022-04-29 02:11:46 Consider that for many box arrow tools, layout has about as much semantic content as whitespace in textual languages.
More completely, layout gives you more: layout also is like the order of things in a source file (often not semantically relevant to the computer but important to authors) and still more. I was going to say layout is like a comment, but the whitespace analogy felt too strong.
Mariano Guerra 2022-04-29 08:08:55 My problem with layout is that the default is messy and requires active work to make it "tidy", with white space the default/least effort option is the "tidy" one.
I say it because I built a box and arrows[1] tool and I saw how much time was spent rearranging the layout for no functional reason.
Same with the dashboard designer, it was free form, people spent ages aligning stuff (there layout had a meaning at least)
[1] https://www.event-fabric.com/
Jason Morris 2022-04-29 17:17:56 I think the main advantage of 2D in programming is not the ability to move or orient things, but the ability to zoom, which is way under-utilized. If I call a library function, I should be able to zoom in on the visual element for the call, and "inside it" see the code for the function. Zoom could make all kinds of nested graphs easier to navigate. Vlojure does a version of this.
Jason Morris 2022-04-29 17:21:37 I also think that semantically meaningless position and orientation can be helpful, if that fits the metaphor of the tool, and allows the user to transfer their instincts effectively. The left side of my desk is to do, the right side is done, not because of the semantics of desks, but because there isn't one, so I can invent one.
Jason Morris 2022-04-29 17:28:17 The challenge with orienting things in 2D space is real, though. In Blawx I'm actively trying to limit how much code would be all together in one place. But even still, I find myself having to shove things out of the way when they grow over each other, e.g. It remains awkward at times.
Nick Smith 🕰️ 2020-08-10 12:16:50 Has anyone ever come across (or thought about) a tagging system for data where nouns and adjectives play different roles? For example, you might search for a "user", but then refine that search to a "banned user". Note that "banned" and "user" are not necessarily independent tags. Just because someone is a "banned user" and a "father" doesn't mean they're a "banned father" as well. The adjective "banned" could specifically relate to the noun "user".
Or a slightly clearer example: someone who is both a "skilled baker" and a "writer" is not necessarily a "skilled writer".
I'm now wondering whether an understanding of (basic) linguistics is necessary to develop a good tagging system. After all, our mission is to adapt programming languages to the human mind 🤔.
This is part of my search for "an ideal model for information" that readers might remember from a few weeks ago.
Chris Knott 2022-04-26 12:26:49 Using the Slack Pro trial to bump this thread which I think is interesting, and kind of relates to something I'm working on at the moment (a knowledge management system with tagging)
Personal Dynamic Media 2022-04-29 04:12:57 We used to dream of programmable agents that could pursue our interests online with a minimum of direction. For example, https://youtu.be/umJsITGzXd0
Online environments like LPmuds and MOOs allowed multiple separate people to create pieces of code that interacted with each other to create a more interesting world for the participating humans.
And yet, nowadays we deploy CAPTCHAs to prevent automation, services place strict limitations on how apis may be used, and the word "bot" is almost always derogatory, often preceded by the word "spam."
How can we create shared spaces that support automation in order to empower humans, but resist spamming, phishing, and other abuse?
Kartik Agaram 2022-04-29 06:45:10 Register all automation with the community, which can inspect it, disable it and penalize its authors/distributors for misbehavior.
I'm not sure if MUDs and MOOs did that, though..
Mariano Guerra 2022-04-29 08:04:45 lobsters has this idea of invitation tree: https://lobste.rs/u
as Kartik says, the user that registers the automation is responsible for it and all the tree up to the root, people don't let other people affect their image in the community, if a bot misbehaves the bot register will be pressured to take action by people up his/her tree
Kartik Agaram 2022-04-29 17:03:58 I've been rereading https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code during my latest bout of introspection. It annoyed me out of all proportion when I first read it (even though I could and still can appreciate the craft that went into it), and with the benefit of hindsight (and having joined this forum 3 years later) I think I understand why: it's unabashedly about the present of software, and by nature that endeavor makes a virtue to newcomers out of how things work today.
On the other hand, I argued the opposite direction over at 💬 #thinking-together@2022-02-26T01:26:22.428Z. So it seems to matter how vehemently I feel about the thing being taught to newcomers, whether I consider it important or irrelevant frippery.
Jason Morris 2022-04-29 17:47:06 Parsers generators allow you to write code that creates trees (usually), from a string of characters. So a way of creating a sort of abstractly 2D thing from a 1D representation. Is there an equivalent tool for generating representations from symbols arranged in 2D? A node-and-arrow parser generator, for example? Something in the graph database world?
Jason Morris 2022-04-29 18:25:16 I think a good small example would be a tool that allowed you to define linear graphemes, which is ironically both above ("we don't process 2D images") and below ("we already have characters") the scope of parser generators. Imagine describing "two parallel straight lines of the same length connected at an obtuse angle by a constant radius curved line" for the uppercase U. Are there tools for that?
Jason Morris 2022-04-29 19:11:03 A large example would be something that detects and parses UML diagrams on a whiteboard. Which seems very promising.
Mariano Guerra 2022-04-29 20:36:30 Not sure it's what you are looking for but the cypher query language is kind of "ascii art graph pattern matching"
MATCH (nicole:Actor {name: 'Nicole Kidman'})-[:ACTED_IN]->(movie:Movie)
WHERE movie.year < $yearParameter
RETURN movie
Paul Tarvydas 2022-04-29 21:59:01 - FYI - there are 2 kinds of parser generators
- parser generators based on language definitions (YACC, LR(k), etc.)
parser generators based on DSLs for specifying parsers (PEG, Ohm-JS, etc.)
DaS (Diagrams as Syntax) If you are interested in experiments, I would be glad to share
I argue that graphics is not the problem, but ascribing meaning (semantics) to the diagrams is the problem, start small and build up, e.g.
what does a “box” compile to?
what do boxes-with-ports-and-arrows compile to?
what do concentric boxes compile to?
“we already have characters”
- we use characters for IDEs (aka programming languages) only because mid-1900s hardware made it easier to grok grids of non-overlapping, small bitmaps
Jason Morris 2022-04-29 22:12:12 I'm not clear what the difference is between a "language definition" and an expression in a "DSL for specifying parsers". But what I'd love to see is an example of 1 or 2 where the elements being parsed are graphical... lines, points, colours, shapes. Graphics is not a problem, agreed. And you can always roll-your-own in terms of parsing from some unusual user input. It's just a data tarnsformation. I'm just curious if the idea of parsing from graphical input has ever been abstracted in the way that is has for text.
Alex Cruise 2022-04-29 22:42:58 I’ve drawn thousands of whiteboards over the years… transcribing them into diagram drawing software is usually an opportunity to revisit, clarify and edit. 😅
Paul Tarvydas 2022-04-29 22:50:12 collecting dust on my shelf
https://link.springer.com/book/10.1007/978-1-4612-1676-6
(tc;dr)
all you really need is SVG + contains () + intersects () + connectedTo ()
see sections “Expressive Power” and “Ambiguity Detection” in https://en.wikipedia.org/wiki/Parsing_expression_grammar
PEG defines a parser in a top-down manner (TDPL), e.g. “if this matches, try to match this next”
LR(k) and LL(k) define languages in a bottom-up manner, e.g. “if this looks like a number, then bubble it upwards as a number” (regardless of the context) ; this is what is taught as “language theory”, and is commonly understood to form the basis of parser generators
TDPL is order-dependent, Lx(k) is not order-dependent (but more restricted)