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

Nils Berg 2021-06-06 22:21:53

More thoughts on Hest, carrying on from https://twitter.com/spiralganglion/status/1401625480348848132 (Hi Ivan Reese!)

I had some thoughts on synchronization of data, which I realize is an aspect of Hest's design space that's not fully explored, so grain of salt and all that 🙂

Mostly I want to draw a parallel to chip design (VHDL/Verilog), which if you squint a bit is a lot like Hest but with much, much worse UX. You run into the same synchronization problems there, and the solution is actually really close to both the "sync" primitive and the "Fibers" you describe in your podcast – you put latches/registers between components of your design.

In fact, those are a nice implicit way that abstraction and structure can arise in a hardware design – when you realize you can't do all the things you want to instantaneously, you add a latch, which then delineates a component/pipeline stage.

One point (in my eyes) in favor of calling it a "barrier" rather than the concept of "Fibers" is that with Fibers, you're essentially making the bug undetectable. Consider a -thing- with two inputs, but one of them does not arrive.

If your inputs are combined at a barrier, your code would get stuck if either input didn't arrive in time, and the program might grind to a halt.

But with Fibers, presumably one of your inputs just wouldn't change and you'd have stale data on that input, but not the other. That's a recipe for producing garbage outputs and never noticing until fifteen functions later (see also: ROS 🙄 – or any pub-sub system, really).

Ivan Reese 2021-06-07 16:44:13

I saw this message right when you posted it, but decided to take some time to think about it before responding.

(As an aside — the relation to chip design is choice. I work for a company that studies hydraulic & electrical systems, so there's a ton of "I read schematics" DNA going into Hest. Not quite the same domain, but adjacent.)

But with Fibers, presumably one of your inputs just wouldn't change and you'd have stale data on that input, but not the other.

My initial thought is that this is probably fine. As in: it's not as good as not hitting this bug, granted, but it's a bug that should be easy to avoid most of the time and easy to solve when it does come up. If you hit this bug, then when you notice it 15 functions later, you just rewind execution back until you see where the problem cropped up.

That was my initial thought. But my prevailing thought is... that I don't understand what you mean by this:

One point (in my eyes) in favor of calling it a "barrier" rather than the concept of "Fibers"

Is a barrier like the "sync" node in SpaceChem? Is it something else?

I'd like to hear more about what you think I should do instead of fibers. I think you're onto something (*), but I don't understand it well enough, even after a day of reflecting on it.

(* Fibers are a conflation of several things. They hold state, they help with coordination. There are a few other approaches I've considered that keep those things separate. So it's very likely that I'll find more ways to slice up these concepts by looking at how other domains, like chips, handle similar problems.)

Nils Berg 2021-06-07 18:03:30

Sorry, my bad for phrasing that sentence badly.

By

calling it a „barrier“ rather than the concept of „Fibers“what I was trying to say is that I think a sync node (which I am calling barrier, because that‘s a slightly more precise term imo) would be my preferred solution, even if it does force you to solve the issue of handling the resulting „jams“

Nils Berg 2021-06-07 18:04:46

I think we‘re fundamentally in agreement that something should happen at the boundaries of an „abstraction“, there‘s just multiple ways to argue how best to do it :)

Nils Berg 2021-06-07 18:12:02

Also, I was wondering how a „sync“ node is different from just a point with multiple incoming lines. Do those exist in Hest?

Ivan Reese 2021-06-10 05:16:27

In my (not yet prototyped) designs for various potential approaches to abstraction, there would be the ability to create an abstraction that has distinct "ports" for multiple inputs, like what you'd find in a traditional node-and-wire / patcher visual programming system. I'm not sure that I'd want this to be part of the core language model, but I'd like to be able to build abstractions that can do this out of whatever the core model allows.

In the current prototypes, yes, you can attach multiple edges to a node. I wrote a blog post about how that makes the time-rewinding behaviour a little thorny: ivanish.ca/hest-time-travel

Ivan Reese 2021-06-10 05:19:44

As for how this is different than a sync node — that's the entire point of this inquiry into coordination mechanisms.

Right now, if you have two lines that come in to a single point (function), then that function will be invoked whenever any data arrives at it. Up until now, I've been regarding this as.. akin to having a function that is called from more than one place. Each incoming edge represents a different caller of the function. But this doesn't offer a nice way to build systems that need to call a function with more than one argument. So that's what I'm trying to.. figure out.

Nils Berg 2021-06-10 10:03:53

Thanks for the link, that made things much more clear!

Looks like you're allowing the "function points" (like *=) to have internal state too, which makes rewinding manually-inserted points even more tricky.

It's a fascinating design space, and my initial instinct is to go very functional on it, but that would perhaps make the entire system less accessible (I've struggled with a similar tradeoff at work, actually)

Ivan Reese 2021-06-10 16:51:28

Yeah, state is something I'm forcing myself to wrestle with, at least for now. I think it'd be much easier to design this if there was no state beyond the moving data points. But I think there are a lot of playful things I can do if state is allowed to go anywhere, even if it makes things harder to reason about, harder to design, harder to implement.

If it turns out to be just too difficult to work with, I can always simplify by removing state.

Srini Kadamati 2021-06-11 15:50:11

founder of the startup I work at posted this, def thought provoking

https://www.linkedin.com/posts/maximebeauchemin_interesting-question-thats-top-of-mind-right-activity-6808632061633560577-Zkql/

“So. Business intelligence tools are arguably the “original” and most advanced form of no-code / low-code application. Clearly an interactive dashboard built in your favorite BI tool is a fairly complex no-code, specialized data app. Now here’s the question: why has low-code been so prevalent in data visualization historically while being not popular in other areas of software development? What is it that makes low-code more suited to dataviz?”

Mariano Guerra 2021-06-11 15:54:08

because dataviz people don't identify primarily as "coders" and code as what they do so they are more open to other tools that solve their problems better.

Also it may be because the scope of dataviz is much smaller than "programming", so specialized tools can be created for the domain.

We don't seem to have well defined domains inside programming, they are all software, the only split I can thing right now is frontend/backend.

Mariano Guerra 2021-06-11 15:55:31

visual tools work well in process automation, games, interactive art and others. Maybe for the same reasons.

Srini Kadamati 2021-06-11 15:58:37

for sure, definitely agree. One challenge tho is querying databases, that’s still a very software-engineering-y discipline, but even there you got SQL to help

Srini Kadamati 2021-06-11 15:59:24

if I had to square the circle, I think fundamentally data processing & visualization is about transforming data and a lot of it is tabular (esp for end-users). So you can kinda do tables all the way down, occasionally some JSON / nested editors (e.g. for configuring charts declaratively)

Srini Kadamati 2021-06-11 16:00:05

its like a one way functional data flow. If you wanna do stateful stuff, you do it at the beginning (raw data, transform to add a 7 day rolling window or w/e) or at the end (e.g. last mile chart embellishments) 🤔

Vijay Chakravarthy 2021-06-11 17:34:05

I think its primarily due to this: there are two well baked and agreed upon DSLs that can be leveraged for this process. The first one is SQL/equivalent query languages. The second one is some formalization of the grammar of graphics. Most "apps" in this domain are a combination of the two.

Harry Brundage 2021-06-11 17:38:00

a big part of BI isn't just accessing tabular data though, it's about guiding the data access for an end user who is maybe an analyst or maybe an executive or maybe a random PM. in that sense, report builders are building interfaces, not just doing data access. they pick which filters are available, which are applied by default, and if the tool supports it which filters the end user can apply and how they can change the data they are viewing. the best analysts tell a story, and then make the re-telling of it self serve IMO

Harry Brundage 2021-06-11 17:39:42

i think that part is where the standard tension between less code and more code starts to come into play, where you want composition (so you can reuse different filtersets between different reports), or you want a separation between state and presentation (so you can change some global filter state in one UI panel and have it be reflected in another UI panel), or you need to do some heavier data processing client side because of the nature of the report (like an interactive sankey diagram or whatever)

Harry Brundage 2021-06-11 17:40:45

and in that sense, i kinda think the BI tools bump up against the same fundamental restrictions that low/no code tools seem to have which is that composition is hard and escape hatches are hard to make play nice with the rest of the off the shelf bits

Harry Brundage 2021-06-11 17:41:56

(my friend has been hard at work on this which personally i think is super promising https://www.evidence.dev/)

Srini Kadamati 2021-06-11 17:44:09

oo very cool

Srini Kadamati 2021-06-11 17:44:50

does your friend plan to integrate with dbt?

Harry Brundage 2021-06-11 18:17:55

sure does, i think its gonna be a match made in heaven!

Srini Kadamati 2021-06-11 18:20:10

very cool

Srini Kadamati 2021-06-11 18:20:51

if your friend is open to it, I’d love to chat with them! My day job is working on Apache Superset (in a community / devrel fashion): https://github.com/apache/superset

But no worries if not 😄

Srini Kadamati 2021-06-11 18:58:30

[June 11th, 2021 11:58 AM] skadamat: my god what an amazing time to be working on data tooling. Seeing interesting prototypes every day:

https://datablocks.pro/

Andreas S. 2021-06-12 09:11:14

🐦 Jon Purdy: Been thinking about what this might look like.

I think my basic tenet is that an application not be a singular thing, but an emergent entity made of interacting components, and that the system prioritise replaceability, both of components, and of the HW/SW/network substrate. https://twitter.com/evincarofautumn/status/1403177215106248705

🐦 Jon Purdy: @mycoliza I’d like to see a world with a more meaningful form of user freedom than mere access to source code. If you can’t actually do anything with code, what good is it to you as a user? I don’t want “free software” or “open source”, I want accessible computing.

Nils Berg 2021-06-12 23:39:56

That reminds me of the defunct unununium os (https://www.techtalkz.com/threads/unununium-the-all-new-operating-system.156/).

Anyone know what happened to those devs?

Everett Pompeii 2021-06-13 15:43:00

Hey all,

I'm not sure where else to post this. What is the procedure for visiting Dynamicland?

I shot an email to hi@dynamicland.org, but I figured someone here may be able to redirect me if there's a better course of action.

Christopher Galtenberg 2021-06-13 17:38:34

Everett, I hate to be the one to do this, but Dynamicland is just the latest iteration of the Englebert Demo – it's a cruel prank, a complete fiction, meant to torment creative types with utopian fancies of impossible human-machine experiences. It's meant to be visited in your daylight reveries. It will exist in the real world when those city types and them country folks finally make nice.

Or as Trudy Campbell once put it, "Oh, Peter, don't go to the well—there's no water there."

Dynamicland is currently closed for "deep cleaning".

William Taysom 2021-06-14 04:34:32

Maybe someone here knows better, but Dynamicland doesn't seem particularly Covid compatible.