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

🕰️ 2020-08-06 03:42:31

...

Lukas Schwab 2020-08-11 00:16:22

I'll be sure to post back here, then!

Lukas Schwab 2020-08-11 00:21:05

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.

Harry Brundage 2020-08-11 14:02:03

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

Ivan Reese 2020-08-11 15:12:28

There are a bunch of systems that use the cells-with-formulas/relationships model behind the scenes. Here are two from the Clojure world:

Ivan Reese 2020-08-11 15:36:01

(Just realizing I glossed over part of your request — these aren't expression languages! Still, hope they're somehow helpful.)

Jack Rusher 2020-08-11 18:08:11

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.

Andrew F 2020-08-11 18:23:03

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.

Harry Brundage 2020-08-12 13:41:48

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

Garth Goldwater 2020-08-11 19:37:16

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?

Chet Corcos 2020-08-11 19:39:48

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/

Garth Goldwater 2020-08-11 19:43:24

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!

Garth Goldwater 2020-08-11 19:43:53

im trying to implement new semantics for collections but I want to retain literal syntax because i’m a big baby about readability

Ivan Reese 2020-08-11 20:47:06

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!

Ivan Reese 2020-08-11 20:48:00

Math.TAU forever!

Ryan King 2020-08-11 21:43:46

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 😭

William Taysom 2020-08-12 01:24:20

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."

Garth Goldwater 2020-08-12 15:10:21

everyone in this thread should be ashamed of what they’ve enabled

Chet Corcos 2020-08-12 20:41:00

lol, I like it!

Garth Goldwater 2020-08-12 21:00:42

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!

Gregg Tavares 2020-08-16 04:19:19

You can do whatever you want of course. As for me though, why I don't monkey patch

  • don't find out later a function was added with the same name and now in order to use it I have to refactor all my code
  • don't want to mis-lead others into thinking this is a standard function. This comes up a lot since I write tutorials and in particular one of the first/original tutorials on one of the topics I write about monkey patched things in and confused learners for many years. For at least 8 years people would ask on S.O. why their code wasn't working only to have to be told what they thought was part of the official API was monkey patched by their tutorial. Fortunately those tutorials are no longer online but the legacy lingers since the examples have been copied forever
  • because while I might not care about other people's code or never worry my code might become a library I'll get use to this pattern and then find it frustrating when there's a case I can't use it. Prefer just not to go down this path in the fist place.
  • and finally, because I don't get the benefit at all. Why is someArray.render(msg) better than renderArray(someArray, msg) so zero pluses (for me), multiple negatives = I choose not to do it.
Ivan Reese 2020-08-16 06:29:01

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)

Garth Goldwater 2020-08-16 15:10:04

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”

Ivan Reese 2020-08-16 15:27:39

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.

Chris Pearson 2020-08-12 07:25:25

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?

Chris Pearson 2020-08-12 07:57:36

Yes that's the one! Thanks!

nicolas decoster 2020-08-12 08:15:49

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!

Chris Knott 2020-08-14 10:36:32

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?

🔗 MercuryOS

yoshiki 2020-08-15 02:45:27

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.

Garth Goldwater 2020-08-13 20:34:16

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

Chris Granger 2020-08-13 20:40:06

You want pointers rather than references. You’d then change what’s at the pointer’s location, while leaving the pointer as is.

Doug Moen 2020-08-13 20:55:56

In C++ you write *this = newObject;.

Andrew F 2020-08-13 20:57:15

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.

Ivan Reese 2020-08-13 21:27:11

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.

Garth Goldwater 2020-08-13 21:46:52

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

Garth Goldwater 2020-08-13 21:47:04

sorry the formatting is screwy i’m on my phone

William Taysom 2020-08-14 03:32:38

Thanks Mariano Guerra. I came here to mention become:. Works well for state machines.

Jack Rusher 2020-08-14 07:19:14

Nice work around an interface for entering curves into a livecoding system with an X/Y interface (mouse, pen, &c):

https://twitter.com/awwbees/status/1294025917510168578?s=21

🐦 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:

Ivan Reese 2020-08-14 14:56:29

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)

Ivan Reese 2020-08-14 14:58:59

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.

Scott Anderson 2020-08-14 18:33:08

Dreams has similar functionality in it's audio editor as well https://youtu.be/E3BPsKb8p6I?t=1033

Scott Anderson 2020-08-14 18:33:53

Dreams has so much cool shit that's buried in 1 hour + tutorial videos that are mostly navigating menus and talking

Jack Rusher 2020-08-14 20:07:18

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.

Ivan Reese 2020-08-14 20:12:44

Douglas Adams: Hyperland (ft. Ted Nelson, Vannevar Bush, a handful of folks from the MIT Media Lab, etc).

https://www.youtube.com/watch?v=1iAJPoc23-M

Ivan Reese 2020-08-14 20:19:33

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.

Christopher Galtenberg 2020-08-14 20:29:15

Fun. I could see that being combined with hypercard's idea of levels -

  • level 1, just show a form or whatever the user typically sees
  • show information moving around, combining to become a payload
  • see as data goes through the browser to become a network http request, headers etc
  • see as data lands on the server, moves through ingress and gateways, to land in a db and back out through API - a combined view of all inbounds and outbounds
  • see the performance load everywhere, I/O, bottlenecks
Robert Butler 2020-08-15 00:27:29

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.

Ivan Reese 2020-08-15 00:44:05

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 :)

Scott Anderson 2020-08-15 03:06:07

Professional programmers (who also tend to make programming languages and tools), have a fixation with making programming feel like serious work

Scott Anderson 2020-08-15 03:25:47

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...)

Ivan Reese 2020-08-15 04:18:28

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.

Gregg Tavares 2020-08-16 04:34:58

Actually, this was brought up before but there is a strong argument that education does not have to be fun.

https://www.youtube.com/watch?v=g1ib43q3uXQ#46m17s

Ivan Reese 2020-08-15 04:39:20

Ivan Reese has renamed the channel from "random" to "linking-together"

Shalabh Chaturvedi 2020-08-15 05:29:55

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.

Jack Rusher 2020-08-15 06:31:24

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).

Kartik Agaram 2020-08-15 20:03:31

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.

Gregg Tavares 2020-08-16 04:39:18

Stuff goes way back. Here's effectively a cell phone from 1931

📷 image.png

Gregg Tavares 2020-08-16 04:42:01

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

Ivan Reese 2020-08-15 06:45:51

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.

  • Links about the programming / world of the present should go to #present-company, unless they are framed with an eye to how the future will unfold.
  • Links about history are welcome here, since any view of history incorporates a sense of how things have evolved, which is one of the most powerful ways to understand how things will continue evolving.
  • Discussions that might include a link as supporting material, but center on your own thoughts or questions, should go in #thinking-together.
  • Feel free to post multiple links in the same post if they are directly related and should be discussed together.
  • If your link generates a rich preview, the preview may be removed by an admin if it doesn't offer meaningful value. Inline videos are meaningfully valuable. Good summaries of an article are meaningfully valuable. A generic image of some code text or a mountain scene accompanied by the name of the article... not valuable, will be removed without notice. Please provide adequate context in your post, explaining why we might be interested in the link, rather than relying on the rich preview. (After all, rich previews aren't searchable)
Ope 2020-08-15 08:04:15

This should be pinned. I think it’s possible to pin messages in slack right?

Ope 2020-08-15 08:09:45

I took the liberty of pinning all the messages

Nick Smith 2020-08-15 08:40:04

center on your thoughts should go inIvan Reese is this a typo?

Ivan Reese 2020-08-15 12:58:01

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.

Nick Smith 2020-08-16 02:58:26

Ah, I see. Another parsing error of mine. The extra comma helps.

Garth Goldwater 2020-08-15 16:27:52

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

Chris Maughan 2020-08-15 16:39:50

Many games use Unreal Blueprints extensively too.....

Ivan Reese 2020-08-15 16:41:04

Hollow Knight was my favourite game of 2018 (tied with Celeste), so this is really charming to see.

Chris Knott 2020-08-15 17:50:18

I had no idea. Such a good game.

Charlie Roberts 2020-08-15 17:59:41

loved seeing that parallax view in this article, really amazing work for a great game. looking forward to investigating playmaker!

Roben Kleene 2020-08-15 22:20:32

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

Doug Moen 2020-08-15 22:36:17

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.

Jack Rusher 2020-08-16 07:09:41

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. 😕

🕰️ 2020-08-05 20:56:05

...

hamish todd 2020-08-15 23:36:24

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.

yoshiki 2020-08-16 05:38:18

@hamish todd A Q&A would be awesome!

Ivan Reese 2020-08-16 06:08:02

(I think this warrants a separate thread — it's no longer about the twitter account in question)

Garth Goldwater 2020-08-16 00:08:36

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

🐦 Thriving🅾️n☪️h🅰️🅾️s: @2600

WTF ? 6472 magazine. Funny stuff. https://pbs.twimg.com/media/EfebHUsWsAAnvmB.png

Nick Smith 2020-08-16 03:27:44

Nick Smith set the channel topic: For sharing and discussing external media (articles, podcasts, tweets, etc.)

Nick Smith 2020-08-16 04:26:58

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:

  • Simple Made Easy (for learning how to evaluate whether your language constructs are well-designed)
  • The Value of Values (building upon Simple Made Easy, it asks us to reconsider the information models we define for our programming systems)
  • Are We There Yet (building upon The Value of Values, it suggests how we could model time and change in a value-centric programming system)
  • Spec-ulation (asks us to reconsider semantic versioning and APIs)
  • Effective Programs – 10 Years of Clojure (a big-picture talk that revises all of the prior talks, and makes some additional points)

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.

Orion Reed 2020-08-16 11:12:20

As someone who’s watched 3/5 of the talks you mentioned, I really appreciate how you’ve ordered them and tied them together.

Nick Smith 2020-08-16 11:15:47

Haha it’s a rough ordering. It’s not even chronological but I think it’s a good order for watching 🙂