You are viewing archived messages.
Go here to search the history.

Kartik Agaram 2023-11-15 16:40:55

I seem to have renewed my collaboration for a tablet-friendly programming environment. For the current version (love2d.org/forums/viewtopic.php?t=94852), my partner led and pushed for preserving LÖVE primitives. For example, the LÖVE event loop calls functions you define called love.draw , love.keypressed , etc., and it seems desirable to continue to support those for familiarity's sake. This can seem impossible if the environment is also built in LÖVE and uses those same functions for providing its infrastructure, but since Lua is a dynamic environment there are tricks to make it work reasonably nicely.

Lately I've been taking the lead on a riff of that project, and I find I'm advocating strongly to not do this. I want to define new handlers like shell.draw and shell.keypressed that programs within my environment will have to call. And I finally figured out why I feel so strongly about this:

  • LÖVE has a function to return the bounds of the device/window. You typically can draw between x coordinates 0 and some width. And this information is often used to draw UI elements near the edges and corners. So should we now override functions like line to adjust coordinates and keep them in the client area? There's a lot of surface area to cover here. Bugs will inevitably happen, and when they do our attempts to create a seamless abstraction will cause more confusion.
  • Ranting more broadly, the desire for a "seamless experience" is a disease. The provider wants to "own the customer relationship," so that the user can forget there's anything in the universe but themselves and the app. Just like a casino. I'd rather not pretend we can wish the universe away with its possibility of errors. Let's me and the user treat each other as grown-ups, and not hide irreducible complexity in our supply chains. Here are the functions I provide, here are the functions LÖVE provides. I recommend you use my stuff where possible, but you don't have to. Yes, it's confusing. Welcome.

carousel-shell-mockup.png

Konrad Hinsen 2023-11-16 06:41:04

The eternal issue of leaky abstractions (which in software means any abstraction). Either you restrict your universe to the point that the leaks become irrelevant, or you live with the leaks. The second path involves more suffering but also more power to its adepts.

Tom Lieber 2023-11-17 05:58:35

Grown-ups can empathize with your irreducible complexity, but that’s different from disliking seamless experiences.

I think that desiring a seamless experience is less a disease than it is a consequence of being a busy grown-up. I would prefer one API to two overlapping APIs, but if you told me that that was too hard, I would understand.

Kartik Agaram 2023-11-17 14:44:03

My original statement was incoherent and ungrammatical ( checks channel ; oh good 😄) so let me clarify. By "disease" I meant something that impacts the longevity of a system. So really more like "health". The desire for seamless experience is bad for health the way sugar is bad for health. But even that isn't right. It can be bad for health. If acted on. But living with the desire is hard! I'm tempted by sugar everyday. I often wish I could just stop desiring sugar. Then it would be easier to not act in a sugar-seeking manner.

Hopefully that's all clear now 😅 I'm very happy to receive the work people put in to reduce the number of seams in my experience. But if a website lays out wrong and fixes itself after I resize a little and rejigger the fonts, I try to put that out of my mind. I want to focus on the important stuff. Is this website giving me useful information, is it respectful of my attention, is it relaxed around me (not squirming, squirming to get its tentacles deeper into me). A seamless experience can't compensate for failings in these areas, and it is all too common for seamless experiences to hide all manner of deeper malfeasance. When we push for more seamless experiences we're also encouraging the organisms we interact with to grow more tentacles, make them more muscular, use them more ceaselessly in search of advantage. This is not conducive to our long-term health, to put it mildly. Let's cut the mild grasshopper some slack; hopefully then it won't turn into a locust.

Tom Lieber 2023-11-17 19:52:42

I think I follow, thanks. 🙏

Konrad Hinsen 2023-11-18 06:01:07

Kartik Agaram A nice analogy. As with health, a key element is developing awareness, for everybody involved. Eating a sweet dessert is OK if it is done consciously, knowing that it should be something exceptional. It's the habit of eating sweet that is bad for health. Likewise, a seamless experience, at the price of agency, is perfectly fine if it remains restricted to appropriate settings, such as watching a movie or playing a game. It reduces agency only if it becomes a priority in digital life.

Kartik Agaram 2023-11-17 14:44:03

My original statement was incoherent and ungrammatical ( checks channel ; oh good 😄) so let me clarify. By "disease" I meant something that impacts the longevity of a system. So really more like "health". The desire for seamless experience is bad for health the way sugar is bad for health. But even that isn't right. It can be bad for health. If acted on. But living with the desire is hard! I'm tempted by sugar everyday. I often wish I could just stop desiring sugar. Then it would be easier to not act in a sugar-seeking manner.

Hopefully that's all clear now 😅 I'm very happy to receive the work people put in to reduce the number of seams in my experience. But if a website lays out wrong and fixes itself after I resize a little and rejigger the fonts, I try to put that out of my mind. I want to focus on the important stuff. Is this website giving me useful information, is it respectful of my attention, is it relaxed around me (not squirming, squirming to get its tentacles deeper into me). A seamless experience can't compensate for failings in these areas, and it is all too common for seamless experiences to hide all manner of deeper malfeasance. When we push for more seamless experiences we're also encouraging the organisms we interact with to grow more tentacles, make them more muscular, use them more ceaselessly in search of advantage. This is not conducive to our long-term health, to put it mildly. Let's cut the mild grasshopper some slack; hopefully then it won't turn into a locust.

Kartik Agaram 2023-11-16 18:10:16

Last night I built a little program to help first-graders drill on addition -- and promptly found a bug while recording this 😂 (You can see me show the generated solution at the end. It's wrong!)

(Fear not, this will go through usability/correctness testing with the teacher/mother before the kids are subject to it.)

Kartik Agaram 2023-11-16 18:30:18

Ahh, look at that. My debug infrastructure works. Very satisfying.

Maikel van de Lisdonk 2023-11-18 17:55:43

Hi, since I've started building visual programming systems, I have always used a push-based approach where a node triggers another node that follows it. This is much inspired by flow based programming. But since I want to build a generic visual programming system, I think that it is also important to support different ways.. basic statecharts I already support, but a pull-based system is not yet something that I had build with my system. Until now! .. so in this video you can see how I construct a flow that is used to construct a glsl fragment shader. Here the output node pulls in the data from the node's cominh before it in the flow, so working backwards through a flow.

Although it's not my goal to build a full product around this alone.. a lot better and much more extensive applications already exist for building shaders this way. But still helpful to look at my project from a different perspective, which leads to some refactoring, bug fixing, insights and inspiration.

Yesterday I was really in doubt if this was the right route for this week's time spent on my project because of the awesome demo that tldraw made with gpt4-vision api, very cool! So,I also had to play with it together with my own application and was also amazed with the possibilities! Probably my next video will have this as a topic. Anyway, for now, enjoy my short video where I construct a very simple shader which runs on the GPU via webgl.

youtu.be/_VvoZbsmces

Kartik Agaram 2023-11-19 00:34:10

Really cool visuals! I also appreciate your place and route for the arrows. Nice balance between the discipline of straight lines and the aesthetics of curves.

Maikel van de Lisdonk 2023-11-19 07:58:33

Thanks! A thing that I want to improve is the auto placement of new nodes.. I think that your approach with the "rectangle world" in one your

videos might help, so I am going to try something simular.. I also need ways to create space after nodes have been placed, as you can see in my video... currently too much dragging is needed to create space so that the layout of the nodes gets clearer.

Kartik Agaram 2023-11-19 00:35:20

I'm finally starting to think about scrollbars.