&gt; <@UA14TGLTC> I generally loath force directed...
# thinking-together
i
@wtaysom I generally loath force directed layouts
Me too — usually because they're something applied to your work in one fell swoop, not a tool (or suite of tools) you wield interactively. Compare: the tools used for UVW unwrapping when texturing 3d models.
@Nick Smith Text IS a visual. This is a more relevant point than it appears at first glance. It indicates that you can mix text with other kinds of visuals.
Yes, yes, hell yes. And anyone saying "In text languages, we have names, which (while sometimes problematic) are more powerful than arrows" is missing the fact that VPLs also use names: to name "functions" (whatever form they take), to name "parameters" (ditto), and sometimes even to name variables/data representations/abstractions. In a rich VPL, names are used to great effect. In this way, the visual languages are a superset of the text languages. ... Zooming out for a sec — we should all make sure we're looking at the implied higher points found by ascending from the local maxima of the best existing languages (text, visual, what have you) when discussing paradigms. The line of reasoning, "Most ______ have sucked, therefore we shouldn't bother anymore with _____" inhibits progress. Yes, most boxes-and-arrows languages have sucked. But a few of them are fucking phenomenal. When we speak of text languages, we're all proceeding with the tacit assumption that APL & Idris & Racket & other "great languages" are our baseline, not Pascal & SPARC assembly & xBase. Since we're here to study and create something better than the best of what currently exists, we shouldn't mire ourselves in the bottom of the barrel wrestling over which bad thing is most indicative of the failings of its class. ...
@Nick Smith Two major dimensions are composition and choice. Almost every language construct in any functional language is just a combination of these. Function application, function composition, product types, and sum types are just different flavours of composition. If-expressions, case-expressions, and pattern matching are all just different flavours of choice.
[vibrant whirring noises coming from our brains as we take in all our favourite language constructs with these fresh eyes]
@Nick Smith But either way, it's not up to a disbeliever to prove the absence of something; it's up to a believer to prove its existence.
Working on that.
👏 1
😎 3
💥 2
i
It's neat that the language I've been building for myself given what we learned from Eve relates to much of what you highlighted. It's a language based almost solely on composition (APL/combinator-ish) that has FSMs as the primary mechanism for choice. 🙂
i
It's heartening to hear you're still carving away at the marble block we call HCI, Chris. Have you talked about this new language anywhere?
i
nothing yet! Rather than worrying much about making something others might use, I was curious what would happen if I made something solely for myself.
So I haven't really cared about writing much about it
Though, the results so far have been pretty exciting. Should it continue to be so, I'll throw something together for it.
👍 4
When I was figuring out where to go after Eve, Josh and I spent time building projects for various companies, which gave me a nice set of real systems to take as use cases.
One that we built for Stripe can be expressed in 8 lines. Took us two weeks to do it in Rust 🙂
We'll see what comes of it
n
What kind of abstraction was responsible for reducing that labour?
i
The system itself was very simple in principle, but it needed to be very high performance and was built for observability
So there was a lot of plumbing involved with distributing things across cores, managing the lifetime of information, etc
This language is as close to denotational as I can get it though, so none of that needs to be expressed at all. There's a neat tower of interpreters that turns that denotation into all that plumbing.
Relatively little in the programs we write is actually fundamental to the problem. Even things like data structures, which we hold as gospel, don't seem to really matter.
n
That kind of approach requires a "sufficiently smart compiler" to be effective though, right? Offloads the challenge of making things run fast/small, at the cost of control. It's always been a great idea but a very hard problem.
i
Or it requires the denotation to naturally map to an efficient implementation.
This is kind of riffing off of Conal Elliott's ideas about compiling to categories, which he's done some really cool stuff with
n
Interesting... well if you do plan to blog about this at some point, I'd be keen to hear the details 🙂
👍🏼 1
d
Building off of really world scenarios, and as something that you can personally find useful ... sounds like a recipe for success! (e.g. as opposed to just chasing pure ideology)