...
My central curiosity: I'd expect documentation for a library to be nearly isomorphic (using the term very loosely) to the code at that abstraction layer. Entries for exported functions; subentries documenting arguments; etc.
Product documentation is still likely to be coupled, but more loosely. Kind of a Conway's Law for interfaces.
is anyone aware of a simple, open source expression language that is amenable to / built for static analysis to infer data dependencies? somethin' like spreadsheet formulas but maybe intended for authoring in a text box bigger than 14px high
There are a bunch of systems that use the cells-with-formulas/relationships model behind the scenes. Here are two from the Clojure world:
(Just realizing I glossed over part of your request — these aren't expression languages! Still, hope they're somehow helpful.)
We use a spreadsheet like dataflow model in Maria, and it's definitely for authoring more than 14px high blocks. I'm still not sure it's what you want, but if you tell me a bit more I'll try to put you on the right path.
It may be a stretch, but depending on your use case Dhall might be interesting. It's basically a total functional language for generating JSON. https://github.com/dhall-lang/dhall-lang I assume it's amenable to static analysis, but I don't know what kinds are available off the shelf.
thanks for the links folks! the intention would be to use this language as a way for users of a low-code app builder tool to quickly author small snippets for the code part of the low-code. still just exploring, but i'm interested in picking a language that has the right bones for this kind of task so that the platform can handle at least some of the accidental complexity around managing n+1s or pushing predicates down to the database or what have you. so far the thing that seems most appealing would be https://github.com/Agoric/Jessie i think for developer familiarity and dropping a lot of the dynamism of JS to get back to something i have a hope in hell of analyzing
can someone talk me out of monkey patching most of javascripts types for my side project? or at least warn me about pitfalls that matter even if im not importing any libraries?
The main problem has to do with compatibility with other libraries that use the same prototype methods. Otherwise, I think you’re good to go. Also check out Sugar.js https://sugarjs.com/
the page about their philosophy with regard to extensions and how they go about it is actually exactly the kind of in-depth discussion i was looking for—thank you!
im trying to implement new semantics for collections but I want to retain literal syntax because i’m a big baby about readability
Oh, I do the same thing. I just check for existing properties with the same name before patching. I'm not writing a library, so who gives a shit!
Just don't the like that customer support software I was using. They decided to monkey patch arrays in an update and completely destroyed my production app. Quite the nightmare to debug 😭
Garth Goldwater you have come to the wrong place to be talked off this ledge. "Here, have a parachute or, better yet, this pair of wings."
everyone in this thread should be ashamed of what they’ve enabled
me too—my crimes will only get worse from here. a chicken in every pot. a render for every datatype. an edit for every object. chaos reigns!
You can do whatever you want of course. As for me though, why I don't monkey patch
someArray.render(msg)
better than renderArray(someArray, msg)
so zero pluses (for me), multiple negatives = I choose not to do it.For point 4, you then need a way to get renderArray into every scope where you want to use it. If you're trying to minimize namespace pollution, that's extra friction — and it's arguable the friction, as minor as it is, is worse than the downsides of patching. (Not even touching the OO vs FP -ness of this suggestion, haha)
i’m looking at this as me being spoiled more than me being sensible—i could reframe the original question as, “if i design this system to work exclusively with my aesthetic sensibilities of what i’d like js/html/css to work like, how expensive will it get and what currencies will i be paying with”.
i’m not like super concerned with questions about relative merit—for the renderArray example, i’d like to not have to repeat type information, and ivan’s point about namespaces also lines up with my preferences—i don’t want the cognitive load of remembering what i’ve imported where (similarly, i don’t want the cognitive load of remembering to assign new identifiers by calling a function and passing an array in every time i want to do something with it). i don’t think i’d recommend other people do this.
it’s more of an “i’m thinking about making my own bottle rockets in my backyard, launching them at my face, and using a trash can lid to block them like i’m a dungeons and dragons character. what should i be worried about in terms of, eg, eye protection”
Gregg's personal reason #3 carries a lot of resonance with me. I have that thought too.
But I inevitably end up standing on the other side of that line in the sand. I'm almost always in the "designing languages / frameworks" mentality, and I like to play with different kinds of syntax or call signatures or conventions just to learn more about the pain and pleasure of any given variation from the norm. It's nice to be able to do that a little bit while still benefitting from all the infrastructure of JS and in the context of an actual product/serious project, rather than (say) having to write my own language and then figure out how to have an ecosystem around it and then find some sort of toy example project to build in it.
This is the sort of "play" I was https://futureofcoding.slack.com/archives/C5U3SEW6A/p1597465108036100?thread_ts=1597436373.033600&cid=C5U3SEW6A in that other thread.
A few months ago the usual tech news aggregators (HN, Reddit) listed a canvas-like interface that let the user arrange shells on the screen and chain them up like spreadsheet cells. I think it was a research project. Can anyone remember what it was called / link it?
I missed this one... Very interesting! I like how it mix outputs from several "realms". I also like the way you see the intermediate results of a shell pipe chain. Thanks for sharing!
I absolutely adore Userland although I haven't had the chance to try it yet. It's so immediately understandable to me, maybe because it's sufficiently close to the status quo, although it's also such a real demo and design. It just rings true and you are certain it would work and be useful. I think this is because the creator is making it for their own needs.
Compared this to https://www.mercuryos.com/ which I find very difficult to understand with it's avalanche of Concepts and Ideas. It just doesn't feel real. It's the software equivalent of photos a minimalist flat where you can just sit at an empty desk with a coffee and a macbook and a view of the fjords. It's an attractive idea but then you think - where do you keep all your life crap?
Chris Knott I like both. Userland is a functional prototype, Mercury is a conceptual design. As strategies for exploring new spaces and communicating what was learned, they make different tradeoffs in terms of concreteness, broadness etc. I don't think you can make a fair comparison between the two without acknowldging that fundamental difference.
in my continued quest to sin myself directly into hell with my side project, i realized that i wanted to have a member of an array replace itself as the result of a method call, and the natural way to do that seemed to be something like having the last line of the method be this = newObject
. that’s impossible in javascript—this
is immutable and i’m not even sure how you’d update all the references in a coherent way (although i’m pretty sure it would make sense if you were doing enough pointer indirection). does anyone know of any cursed programming systems that let you do that kind of thing? i think there’s kind of an analogy in terms of replacing a server at a certain domain—all the hyperlinks stay pointing right at your new object
You want pointers rather than references. You’d then change what’s at the pointer’s location, while leaving the pointer as is.
In JS, can you just delete all existing fields on this and update with your new object? It's probably possible to do similar things in Python, as long as your remember to update the prototype, class, etc.
You thinking something like Array.prototype.map
but that mutates the array rather than returning a new array?
Or are you thinking something like... arr[x] = fn(arr[x])
, but where the function somehow knows about the array so that you can just call it like fn(arr[x])
and it takes care of updating the array?
Or are you basically asking for become:
? Your domain / hyperlink example makes it seem like that's what you're after, and in this case the fact that arrays are involved is irrelevant.
Let me know what you want the calling context to look like, and I'll see if I have anything in one of my dustier tomes.
Ivan Reese it’s more like become
, i think.
specifically i’m experimenting with going all out on the idea of message networks (making up this vocab as i go along)—so instead of map
or cata
, i’m seeing if i can do stuff like have arrays “broadcast” messages to their children recursively. something like:
Array.prototype.broadcast = function(message) {
this.map(i => i.broadcast? i.broadcast(message) : i[message]``()``)
}
so ideally the objects in an array would update themselves in-place without having to reassign at the array-level/parent-level abstraction, if that makes sense
turns out my mental model of references as “pointers with extras” was wrong lmao—thank you Chris Granger
Mariano Guerra this is gold i had never heard of become
before thank you
Thanks Mariano Guerra. I came here to mention become:
. Works well for state machines.
Nice work around an interface for entering curves into a livecoding system with an X/Y interface (mouse, pen, &c):
🐦 Ryan Challinor: at a @nime2020 workshop streamed two weeks ago, @ojack presented a concept of "fubbles" ("function scribbles") for defining parameter modulation through drawings, and I immediately knew that I wanted to try out this functionality in bespoke:
Yes! I built a character animation tool that used the same kind of capture, but with direct manipulation of the graphics — you'd perform the animation like a puppet show, and then clean up the curves after the fact. (Similar to http://worrydream.com/StopDrawingDeadFish/, but feeding your puppet performance + any sound you made into a timeline editor)
This idea of a "looper pedal"-like UI for rapidly entering data (even, or especially, rough-draft data) is really exciting to me.
Another take on it is https://iorama.studio, which has been shared here a few times. Let me know if you know of any others.
Dreams has similar functionality in it's audio editor as well https://youtu.be/E3BPsKb8p6I?t=1033
Dreams has so much cool shit that's buried in 1 hour + tutorial videos that are mostly navigating menus and talking
The Dreams reference is useful though
https://docs.indreams.me/en/help/getting-started/edit-mode-guide
Ivan Reese Some of my personal art tools work in a similar way, where I draw curves that get used in various ways (to feed the manufacture of shapes, to control easing of animations, &c). I'll get around to making some videos about these things one day.
Douglas Adams: Hyperland (ft. Ted Nelson, Vannevar Bush, a handful of folks from the MIT Media Lab, etc).
Huge mob of people talking about a (very good) game as literally, or at least analogous to, programming: https://news.ycombinator.com/item?id=24155609. It's heartening to see this get so much attention, since my own FoC R&D is motivated by: real programming should look like this and be this joyful.
Fun. I could see that being combined with hypercard's idea of levels -
One of the things I think the best programmers are able to do is either find interest in or make themselves interested in the problem at hand through various framing techniques or other changes to the problem. Because interest increase attention, energy and the potential for flow state, your output on an interesting project is vastly improved.
And they do that despite programming being riddled with things that sap interest, attention, energy, and potential — things that we can and should remove or replace :)
Professional programmers (who also tend to make programming languages and tools), have a fixation with making programming feel like serious work
I was working on an end-user programming language in a "social VR app" (game) that was supposed to be a fun creative experience and there was debate as to whether it should be fun or joyful (some high level goals explicitly stated it shouldn't be...)
The education market has this exact same dilemma — some people (especially the ones paying for it) tend to have an aversion to the idea of "play", which, of course, runs entirely counter to all the research about how people think and learn and socialize productively and fulfill themselves and become actualized and have breakthroughs.
Actually, this was brought up before but there is a strong argument that education does not have to be fun.
Ivan Reese has renamed the channel from "random" to "linking-together"
https://meaningness.com/metablog/pocket-computer
Anyone else read meaningness? Anyway the author found an old essay from 1977 where they described the "pocket computer" - pretty interesting.
Here are a couple of dudes eating breakfast and reading/watching the news on their pocket computers/dynapads/iPads in 2001: A Space Odyssey, made in 1968. (The film's technology consultants https://ethw.org/First-Hand:Bell_Labs_and_2001:_A_Space_Odyssey to get the details of a screen-based future right.)
BTW, most Meaningness readers are interested in his long-running "Meta-Rationality" project, but FoC members might be amused to learn that in a former life he co-authored the paredit-like structural editing features in Zmacs (the Lisp Machine's editor).
Interesting that the couple of dudes are watching the same thing. I wonder if people hadn't yet considered the possibility of on-demand abundance.
And the smartphone from 1874
https://entertainment.theonion.com/long-lost-jules-verne-short-story-the-camera-phone-foun-1819567554
There's also the first fax machine from 1843. I forgot what documentary I saw where they actually showed one working.
https://www.thoughtco.com/history-of-the-fax-machine-1991379
Welcome to #linking-together!
If you found a blog post, article, talk, book, podcast, paper, or other item of external media (collectively referred to as "links") that is in some way relevant to the future of computing, this is the place to share and discuss it.
If you're going to add some commentary about your link, please include that as part of the same post as the link itself — if you split it across two or more messages, it'll be much harder to reference the link and discussion in the future, search for it, etc.
This should be pinned. I think it’s possible to pin messages in slack right?
Thanks Ope. Good idea.
I don't believe that's a typo, Nick Smith. Here's a rephrasing:
Posts that might include a link as supporting material, but that are mostly based on your own thoughts or questions, should go in #thinking-together.
https://twitter.com/ashervo/status/1293653951309426688?s=21 even though the present state of visual scripting seems rough some people are still able to do complex and award-winning work with it!
🐦 Asher Vollmer: Just learned that Hollow Knight was coded almost entirely in a visual scripting language. https://unity.com/madewith/hollow-knight https://pbs.twimg.com/media/EfP7YtFVAAAENhQ.png
Hollow Knight was my favourite game of 2018 (tied with Celeste), so this is really charming to see.
Made with Playmaker https://assetstore.unity.com/packages/tools/visual-scripting/playmaker-368
loved seeing that parallax view in this article, really amazing work for a great game. looking forward to investigating playmaker!
Anyone have any thoughts on this piece about how the web is overshadowing native apps on the desktop? (This is from Brent Simmons, the developer of NetNewsWire, one of the most popular native Mac apps ever.) I’m particularly fascinated that the web has been so successful on the desktop (although really only in the last five years ago for use cases I personally care about, like creative apps) — but on mobile native apps are far more popular than the web. Both of these things are strange to me: That native is so much more popular than the web on mobile, and that it took so long for the web to make inroads for so many important uses cases on desktop. https://inessential.com/2020/08/15/desktop_means_web
Try using reddit, or slack, on mobile web. You are constantly badgered to install the app. Which makes sense for surveilance capitalism, because mobile apps can spy on you far more effectively than web pages can. App installation is generally easier and lower friction on mobile as well.
Reddit's web interface on mobile is so bad after the last redesign that I've started to think they're intentionally ruining it to get people to install the app. 😕
...
Would folks fancy a Q&A with Alan? Like me he lives in London, I could maybe set up a livestream. Warning: takes him a minimum 25 minutes to answer a single question.
(I think this warrants a separate thread — it's no longer about the twitter account in question)
https://twitter.com/2600/status/1294752467410771968?s=21 amazon is clearly doing some type coercion on magazine names—2600 magazine is being sent to people with wildly different numbers as the title
🐦 2600 Magazine: OK, this has gotten officially crazy. We now have FOUR magazine titles at @Kindle. How does our name consistently cause such mayhem? https://twitter.com/desmo_/status/1294673973603696640
WTF ? 6472 magazine. Funny stuff. https://pbs.twimg.com/media/EfebHUsWsAAnvmB.png
Nick Smith set the channel topic: For sharing and discussing external media (articles, podcasts, tweets, etc.)
In the last month I've been re-watching some of Rich Hickey's talks on the "right way" (my words) to design programming systems. I've seen many of them before, but I now have a personal knowledge base that is big enough for the insights of his talks to really hit me. I'm impressed with Rich's level of insight (even though it may be scoped to Clojure at times), and so I'd strongly recommend people to check out his most popular talks. There's an exhaustive list https://github.com/tallesl/Rich-Hickey-fanclub. Some of my favourites:
For the record, I've never used Clojure. So don't be fooled into thinking that his talks are only relevant to people who are interested in Clojure.
As someone who’s watched 3/5 of the talks you mentioned, I really appreciate how you’ve ordered them and tied them together.
Haha it’s a rough ordering. It’s not even chronological but I think it’s a good order for watching 🙂