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

Tom Larkworthy 2025-01-14 20:39:00

Making direct manipulation diagrams fast to develop.

So this work was motivated by "Where Should Visual Programming Go?". I kinda thought dataviz driven development was a step in the right direction but some people here though unidirectional was too limiting. So it made me think about what a bidirection diagram was.

Grammar of graphics provides a nice abstraction of what a scale actually is. It's a mapping from dataspace to pixel space. A bidireciton diagram might go in the other direction, mouse movements (actions) are mapped back to changes in data space. Once you consider libraries like Plot are very liberal on what scales they support: non-linear, categorical etc. then the ability to manipulate data points through a diagram is pretty compelling. You stop thinking about data as external data but as control surfaces that live in a weird high dimensional configuration space of your choosing.

Inverting scales is reasonably easy, once that general primitive is in place then you get a shit ton of possible gizmos that take very little time to make look good and work because all the heavy lifting is done in the other direction using an off-the-shelf dataviz library.

Full explanation and code in a notebook although the one-weird invert trick is quite general.

Federico Pereiro 2025-01-14 21:36:24

A bidireciton diagram might go in the other direction, mouse movements (actions) are mapped back to changes in data space.

Wow. I cannot unsee this now. Extremely interesting.

Jasmine Otto 2025-01-16 18:33:20

I'm so hyped for this. Exactly what I wanted from the latent interfaces meetup tbh.

Kilian Butler 2025-01-15 13:50:21

I wrote a blog post for anyone building AI models, rethinking human-computer interaction, or just looking to build truly great speech products:

• Why TTS is finished as a model paradigm—and what’s next with multimodal speech synthesis.

• How model evaluations must evolve to focus on communication, not just naturalness.

• Why product success hinges on understanding speech’s purpose: meaningful user intent.

papercup.com/blog/speech-ai

Guyren Howe 2025-01-16 19:49:15
Kartik Agaram 2025-01-16 22:32:32

I tend have the opposite take: merveilles.town/@akkartik/113755999123116123

The hard problem is not composing software. We are in the world we're in because of everyone's attempts to compose software. No, the hard problem is defining boundaries on composition that allow any piece of software to quickly and efficiently decide whom not to compose with. And that's a big unsolved problem.

Kartik Agaram 2025-01-16 22:34:22

I'm confused by the formatting. Are you quoting someone else?

Guyren Howe 2025-01-16 22:39:37

In my world, software will be built in such a way that you will have fine-grained control over every significant call. If your errant app was a Frest app, you would be able to just redirect that call to do something different, or nothing at all.

Kartik Agaram 2025-01-16 22:47:22

What is the fine-grained control that is lacking atop today's platforms? It seems to me that every single platform in the history of the world has said, "here you go, green fields, rock out, compose away!" And mess inevitably ensues. Because lots of different people come and do things that don't compose with each other. Even if you as the platform don't prevent them in any way.

Kartik Agaram 2025-01-16 22:49:25

Look at the blog post I linked to above. Imagine your platform takes over the world like wildfire, and everyone is using it. All software is in Frest. How would such issues as in the blog post not arise?

It is perfectly reasonable to say it's not your problem. It's a hard problem! But this is why thinking of software as something composable fundamentally leads us astray.

Guyren Howe 2025-01-16 23:17:43

I won’t necessarily make working out what is the problem any easier. But it does give you a fine-grained ability to intercept and change the dependencies of the software you’re using. Everything has an address, and you can drill into the set of calls that led to anything and change it for next time, copy it and make a “like that, except”, rewind and replay it if that makes sense.

So you would be able to replace the dependency of your app on the call that checks for the wifi with one that does nothing, or one that caches the wifi status and only actually checks once every ten minutes, or whatever you like.

I’ll be writing another blog post laying out how this works soon.

Federico Pereiro 2025-01-17 19:34:16

@Guyren Howe interesting stuff!

  • Every piece of data has an address, but what you see at that address depends on who you are
  • Everything you see always has a useful, relational, searchable UI

  • Security isn't a bolt-on feature but emerges naturally from how things compose

  • Functions are just relations waiting to be filled in

  • Everything is a query, and every query can be changed

I am actually building in a similar direction. It won't be relational at the core, but relations can be built.

Excited to see what comes out of your work!

Andrew F 2025-01-18 00:11:58

I like the manifesto overall, but this part makes me a little nervous:

Every piece of data has an address, but what you see at that address depends on who you are

If there's code running checks on my identity before returning the "data" at that address, I'm uncomfortable calling it "data". There's necessarily conditional code involved, which is as close to a hard distinction between "data" and "code" as you're likely to get. Meanwhile, the possible variants returned from that address don't themselves have separate addresses, so it's hard to say that "everything" has an address.

I think I know what you're going for and generally don't hate it (I have vaguely similar ideas), so maybe this is just a nitpicky request to be more careful about terminology. I feel it's fine if you just say something like all state is in a database, that can present different views to different principals if needed. And within each principal's view, everything they can access has an address.

Guyren Howe 2025-01-18 02:31:56

It’s a simple and pragmatic idea: pervasive application of Row Level Security.

One of the main ideas is that any user of the system should be able to filter or change any input to any function that led to anything they have access to, and get a useful thing that way.

So if you are looking at a dashboard showing the sales in California with various charts and tables, you’ll be able to inspect a call graph of what functions were called with what values, and depending on your permissions, you can override any of the functions or values. Anything from changing the font to changing the chart drawing function. Or pull out the data and do something completely different with it.

🕰️ 2025-01-11 12:54:02

...

Cole Lawrence 2025-01-17 13:03:22

I added a new debug tool which shows how my system is traversing the entities in search of a “focusable” entity that will properly handle the “Arrow Down” exit event. The first video is with broken behavior, where it can’t find an entity that can handle “focus” and the second video shows correct behavior.