• s

    Steve Dekorte

    2 years ago
    @Kartik Agaram I like the idea of talking in terms of what a project is sacrificing to achieve it’s goal. After all, if a significant trade-off wasn’t required, we’d expect it to be done already.
    s
    1 replies
    Copy to Clipboard
  • tbabb

    tbabb

    2 years ago
    @Kartik Agaram It's hard to answer that without enumerating all the zillions of ways that previous systems have failed 🙂! But I think there are a few major categories of requirements, without which a system will fail at being a widely accessible, general purpose visual programming language. So put another way, the topic is "what does a system need in order to hit the mark of doing for programming what GUIs did for all other software in the 80's and 90's?" - Node and wire. - This is the current best way to visually represent general proceduralism. I'm convinced of this after spending over 11 years working with mature tools of this form, and seeing how successfully they're used by non-technical artists. There might be a better way to visually present proceduralism, but if there is, I'm fairly certain it hasn't been invented yet. Wizards and Scratch-clones are common approaches which are clearly, inescapably inferior. - Domain agnostic. - No one would use a programming language that only allows images as a data type (for example), or only 2D tables— they would be niche tools. We probably wouldn't even call them programming languages. But this is the state of affairs for almost all existing node-and-wire tools. It needs to be possible to operate on any kind and shape of data. - Extensible / complete. - It must be possible to process things in ways the language designers didn't anticipate or explicitly design for. In fact, there cannot be any kinds of processing that are impossible to express; the test for this is "Turing completeness". No one would use a programming language if it had a fixed set of functions, and you couldn't add any more. Also, the Turing completeness needs to be usable and purposefully designed— "accidental" Turing completeness doesn't count! - Closed. - The expressiveness, flexibility, and extensibility of the system needs to be fully expressible within the system. Imagine if, in Python, the moment you needed to iterate something, you had to leave Python and write a C++ plugin— No one would use it, and as a programming language, it would barely be useful. Sadly almost every node-and-wire tool, if it is extensible, is not closed. (Allowing extensibility into other systems is permitted, but it must not be necessary in order to express all possible kinds of processing). Many systems fail on this count by making a second, internal system which is not visual— i.e., exposing a textual DSL or even an entirely different (ubiquitously textual) programming language. Note that the external system being "nested" in the presentation of the main system does not constitute the main system being "closed"! For many/most users, crossing that barrier into the outer system is difficult enough that it is equivalent to the external system simply not existing, and the functionality sequestered within being unattainable. - Functional. - This arises from the necessity of node-and-wire. Node and wire systems which model something other than expression composition (like control flow, e.g.), or where nodes have effects on each others' operation that aren't represented by wires, are (fatally) too confusing to reason about. - Well-designed UX. - There is a lot of room for creativity inside the space of this requirement, but many systems fail to get there at all. Some of them fail very badly indeed (e.g.

    https://lynxtool.com/labview-unfriendly.jpg

    ). Many visual effects node-and-wire systems (like Nuke, for example) have mature and well-designed UI (though there is still much room for innovation or improvement), but fail on basically all of the remaining bullets.
    tbabb
    i
    +2
    10 replies
    Copy to Clipboard
  • tbabb

    tbabb

    2 years ago
    IMO the closest thing to hitting all of these of which I am aware is Luna. But it fails on two big counts: (1) it is not closed— IIRC they wrapped Haskell. In particular, Haskell expressions were exposed in the editor, requiring the user to be able to speak Haskell in order to be able to use Luna. This is not a small mistake— the set of users who would need to use a visual tool the most are excluded from using it right off the bat. (2) The UX was, for a node-and-wire tool, not very good. It was visually "snazzy", but not very usable (no offense Luna devs). It seemed to me like the designers either weren't familiar with mature node and wire tools, or failed to learn from them. If there is something that hits all of those, I would be very interested in knowing about it! Also curious what y'all think about each of those points and/or if something is missing.
    tbabb
    Konrad Hinsen
    3 replies
    Copy to Clipboard
  • shalabh

    shalabh

    2 years ago
    Talking about the culture of complexity, I'd like to repost Jonathan Edward's https://alarmingdevelopment.org/?p=1173. There is definitely a cultural issue, not just a technical one.
    shalabh
    1 replies
    Copy to Clipboard
  • s

    Steve Dekorte

    2 years ago
    Does anyone know of an OO language where objects have externally explicit namespaces for their protocols? For example, instead of something like “aView.onDropEnter(…)” it might look like “aView.dropping.onEnter(…)“.
    s
    d
    +4
    25 replies
    Copy to Clipboard
  • i

    Ivan Reese

    2 years ago
    That conversation on Saturday was epic. Thanks everyone for weighing in on that. This is exactly why I come here. Early in the discussion, @Steve Dekorte asked the following:
    [With respect to] specific visions, would folks here find it helpful to have a way to collect member’s (brief) thoughts on their perspectives on FoC, and their project’s vision and implementation?
    I'd love to communally decide on a "business card"-like way to share our visions and projects. Something like a 1-page (max) writeup. These could live on our personal or project websites. We could make it the norm to add this link to your Slack profile, so people can see your vision statement by clicking on your name then visiting the link. Based on that big discussion, I wrote up some thought-clarifying questions that could be used as writing prompts. These aren't meant to be directly answered, but they might be useful axes to establish in your writeup.
    1) How specialized is your project — Is it for building everything from device drivers and shell scripts to web servers and WASM? Or is it focussed on one or a few specific tasks?
    
    2) How would you describe the people who will use your project — Are they programmers? Non-programmers? Artists? Junior developers? Children?
    
    3) What are the shortcomings in the current common practice that your project aims to address? What common shortcomings does your project choose to ignore?
    
    4) What history are you drawing upon — Particular research? Xerox PARC? An idea tossed-off in a lighting talk?
    
    5) How would you characterize your project's ideal role in the culture — is it a grand leap forward, a small step in the right direction, merely a suggestion for a better direction to travel?
    
    6) What difficult tradeoffs have you been forced to make in the design of your project? In other words, what has been sacrificed to make your project better than existing projects?
    In a thread (I'll start one), I'd love feedback on the idea of the 1-pager, and on these questions. Feel free to suggest different clarifying questions / writing prompts, or just to nit pick wording, if you think there's some merit to something like this.
    i
    ogadaki
    +3
    11 replies
    Copy to Clipboard
  • i

    Ivan Reese

    2 years ago
    To be clear — I don't think we should answer these questions directly. They're just things to think about when writing your vision statement. You don't need to address those questions at all, even. I think it'll be more helpful for people who want to learn about your work if you write something that is self-contained, like an elevator pitch (but a bit longer — a page, roughly — so more like an "escalator pitch"). Full sentences and paragraphs. Assume the audience is a member of the community but not aware what your project is about. And placed on your website, so people in the future can refer to it with ease. I'll try to write up something for my own project as an example tonight, if that helps.
    i
    Kartik Agaram
    2 replies
    Copy to Clipboard
  • Duncan Cragg

    Duncan Cragg

    2 years ago
    Just seems a shame not to use this kind of material in the spreadsheet if people are writing it, that's all!
    Duncan Cragg
    i
    +1
    11 replies
    Copy to Clipboard
  • Kartik Agaram

    Kartik Agaram

    2 years ago
    As an alternative experiment, I created a wiki exclusively for escalator pitches. Here's mine: http://futureofautomation.wikidot.com/mu The benefit of a wiki to me is that there is (hopefully! haven't checked wikidot yet) a way to get notified when people update docs. I'd love to have some peripheral awareness of how people are reimagining what they do. Who's coming 'closer' to me in phase space, and who's moving 'away'. If this seems interesting I'd love for people here to create pages for themselves. I'm going to follow all pages created. A word on the URL. It comes from the conversation on Saturday where Steve Dekorte helped me see that there may be divergent needs for two broad categories of use cases: creators and automators. I definitely find myself very clearly on one side of that divide, and that's reflected in the URL. However, I don't intend to exclude creators. I just wanted to leave 'futureofcoding' available for the community here to take charge of, in case we decide to stick with this experiment. Bottomline: I'd love for everyone here to make a page for themselves, whether they fit into this very fuzzy categorization in my mind or not.
    Kartik Agaram
    Duncan Cragg
    7 replies
    Copy to Clipboard
  • Breck Yunits

    Breck Yunits

    2 years ago
    Just read this from Taleb's Twitter:
    Breck Yunits
    i
    +3
    9 replies
    Copy to Clipboard