this post was submitted on 10 Dec 2023
1368 points (98.2% liked)

linuxmemes

21263 readers
1166 users here now

Hint: :q!


Sister communities:


Community rules (click to expand)

1. Follow the site-wide rules

2. Be civil
  • Understand the difference between a joke and an insult.
  • Do not harrass or attack members of the community for any reason.
  • Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
  • Bigotry will not be tolerated.
  • These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
  • 3. Post Linux-related content
  • Including Unix and BSD.
  • Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of sudo in Windows.
  • No porn. Even if you watch it on a Linux machine.
  • 4. No recent reposts
  • Everybody uses Arch btw, can't quit Vim, and wants to interject for a moment. You can stop now.

  • Please report posts and comments that break these rules!

    founded 1 year ago
    MODERATORS
     
    you are viewing a single comment's thread
    view the rest of the comments
    [–] [email protected] 12 points 11 months ago* (last edited 11 months ago) (4 children)

    How would you implement piping in GUI?

    Could you show us an example program with a GUI you created for this?

    [–] [email protected] 7 points 11 months ago

    To play the opposite team a bit here, I like the idea Android uses of Intents for something like this. I think it falls apart a bit in reality because app companies kinda want you in their garden and so don't often do the work to keep things interoperable. That and the use cases from users on phones don't frequently involve cross app functionality. But the ability is powerful for apps to say "my app needs a user photo" or one of my faves "my app needs a pgp provider (for the password store app)" and then let the other app do that piece of functionality as determined by the OS, which tracks a lot of those providers and lets the user decide which to use.

    [–] [email protected] 4 points 11 months ago

    https://en.wikipedia.org/wiki/Automator_(macOS), or in general, https://en.wikipedia.org/wiki/Visual_programming_language

    'Course, there's a reason those things basically never catch on, which is that they don't actually reduce the inherent difficulty of figuring out the algorithm, and for anything non-trivial messing with a whole bunch of drop-down lists and shit is more cumbersome than just typing the damn thing.

    [–] [email protected] 3 points 11 months ago* (last edited 11 months ago) (2 children)

    Are you talking about sending the output of one process to the input of another?

    I think the shaders I’ve mentioned are a great example of that: you do something in a block, then send the result to the input of another block.

    Sorry if it’s not what you mean, but my point is that, with some effort, you can create a visual representation of even the most abstract concepts. Physicists do this constantly. If we can make a visual representations of 4D, for example, what prevents us from doing the same for programming logic? Or for commands?

    [–] [email protected] 7 points 11 months ago (1 children)

    Yeah, and doing this would take significantly longer to use every time than typing up a chain of commands in a terminal.

    [–] [email protected] -1 points 11 months ago (2 children)

    Agreed. But that’s not my point. My point is that it can be done.

    And in some cases, even if it’s less than ideal, and is way more cumbersome than using a CLI, you are helping non-tech-savvy people do things they couldn’t do any other way.

    [–] [email protected] 4 points 11 months ago (1 children)

    Linux users: Non tech savvy people? Yuck

    Also Linux users: Everyone should be running Linux instead of Windows!

    [–] [email protected] 7 points 11 months ago (1 children)

    Put those two statements together and the logical conclusion is that Linux users simply want everybody to be tech-savvy (although I'd use a different term: computer-literate). What's wrong with that?

    [–] [email protected] 1 points 11 months ago (1 children)

    Not everyone has the same interests. All car people would love everyone to be car people. All bikers would like everyone to ride bikes. The difference is that you pretty much need to be interested in computers to run Linux.

    [–] [email protected] 1 points 11 months ago (2 children)

    It's not about having the same interests; it's about the fact that the single distinguishing factor between a computer and any other mere machine is its ability to be programmed, and you therefore don't really know how to use a computer unless you can create novel workflows to solve your own novel problems. If you can't script, you aren't literate in the 21st century.

    All car people would love everyone to be car people. All bikers would like everyone to ride bikes.

    It's funny you should use those particular examples, (and not just because they also happen to be things I'm particularly passionate about).

    In particular:

    1. If you live somewhere that's built wrong (i.e. is car-dependent) and you can't drive, you're homebound. It's not about being a "car person;" it's about the skill being necessary to function.

    2. Conversely, places that aren't built wrong are precisely those that facilitate cycling as a matter of design and policy. It's not about what "bikers would like;" it's about what empirically works best for a functioning city.

    [–] [email protected] 1 points 11 months ago

    Honestly i dont think any of my friends or family can script any thing.

    [–] [email protected] 1 points 11 months ago* (last edited 11 months ago) (1 children)

    I used to examples because in both cases it's things you can do without it being an interest to you, you do it out of convenience, no need for a deep analysis, I could have said people who love camping would like everyone to love camping, it would be the same thing.

    And just like those things, people use computers out of convenience and it's perfectly acceptable that some people don't have a deep interest in them and therefore wouldn't be interested by an OS that requires a deeper understanding of computers to make it work.

    [–] [email protected] 0 points 11 months ago (1 children)

    I used to examples because in both cases it’s things you can do without it being an interest to you, you do it out of convenience

    No, they're things you have to do without it being an interest to you; you do it out of necessity.

    And that's exactly my point: you have to know how to, if not "program," at least chain functional components together into a workflow, if you are to be considered computer literate. IDGAF if you're using Linux or not; that applies equally to folks using Windows or MacOS too. Just like how the concept of (regular) literacy requires being able to write, not just to read, the act of using a computer is inherently one of creation and synthesis. If you're not doing that, you're merely consuming content.

    [–] [email protected] 0 points 11 months ago

    You don't get the point at all...

    No, going biking around the lake on the weekend isn't a necessity, driving your car instead of taking the bus isn't a necessity and no I'm both cases you don't need to understand the mechanical intricacies of the bike or car to do it. You're over analysing for no reason.

    And no you don't need to be computer savvy to use a computer if you use an OS that's simple and automates tasks like updates and not everyone wants to understand computer enough to do those tasks manually, hence me pointing out Linux users spitting on people that aren't good with computers while also saying that everyone should use Linux, which requires being good with computers.

    My 90 years old grandma got her first computer at 80 and she couldn't tell you how to plug a mouse in it, it doesn't prevent her from using it to check Facebook and get emails!

    [–] [email protected] 2 points 11 months ago (1 children)

    Nobody capable of defining an algorithm in a visual flowchart like that isn't also capable of doing it in a CLI (or at least, in text in general -- writing a script). It's thinking through what you want to happen that's the hard part; expressing it in the UI is trivial in comparison.

    [–] [email protected] -2 points 11 months ago* (last edited 11 months ago) (1 children)

    Some people have problems remembering commands, for example. And it’s easier for them if they can see it.

    Yes, you can teach a kid to program (with some effort), but there’s a reason why Scratch presents logic units with shapes and colors and a GUI.

    There are many reasons why a visual representation may be easier to grasp than just resorting to memory and remembering abstract concepts.

    I mean, do you remember everything that you write? You’ve never had to visit Stack Overflow to remember how to do something, because you forgot the exact syntax of an operation? Now, how about if I put things visually in front of you? What would be easier?

    [–] [email protected] 1 points 11 months ago

    I've probably spent more time looking up how to access specific functions in a GUI than for CLI.

    [–] [email protected] 1 points 11 months ago (1 children)

    Wow, you created this program for creating shaders visually? That's impressive! You mind sharing the source code?

    [–] [email protected] 2 points 11 months ago

    Things like that have been around for a long time. It was like two decades ago that I saw this shader scheme in softimage|xsi.

    For implementing something like that, each node in that graph would have an array of inputs and outputs. Each of those would have a type like vector, scalar, colour, string. Then you only allow connections if the inputs and outputs match types (though you can also have conversion nodes or selectors that say pick the red channel of a colour to turn it into a scalar). Each input can be set to a constant value instead of connecting something else to it. Outputs don't need to be connected, which is mostly useful if a node has multiple outputs. Then each node has an evaluation function that takes all input parameters and maybe internal configuration parameters (though you might as well make everything an input param since there's no real functional difference) and uses them to calculate the outputs, which it then sends on to anything connected to those.

    I'm not much of a UI guy but displaying it for the GUI would just involve drawing boxes or some shape for the node, then spaces for each of the inputs on the left side and outputs on the right side maybe colour code them by type, and lines running along the connections. Then just add the name and/or other visual information you want to display and positional information to let users move it around their work area.

    [–] [email protected] 3 points 11 months ago

    This right here, you can gui a single program, but with pipes we can chain nearly infinite programs. No way can you make a gui that is that flexible, I refuse to believe until I see it