IRC channel logs

2023-06-11.log

back to list of logs

<Zarutian_iPad>Ryuno-KiAndrJaen: re “Async/await was introduced to combat the Pyramid of Doom”, yeah I am familiar with that thing
<Zarutian_iPad>this is why .then() sausages came about. But as I explained async/await syntax causes a few bad habits in programmers using that syntax.
<Zarutian_iPad>one synptom of it, rightfully pointed out, is the “What colour is your function?” blog post
<Zarutian_iPad>this is because the async/await syntax confuses together two distinct things into one
<Zarutian_iPad>the former is just normal functions and their sequential control flow, a thread of (potential) execution so to speak
<Zarutian_iPad>the latter is a task with steps
<Zarutian_iPad>steps that are each represented by an normal function
<Zarutian_iPad>the entire task is represented by the sausage chain of such steps
<Zarutian_iPad>basically what async/await syntax does is to inadvertantly trick people to write couroutine threaded code.
<pukkamustard>hello spritelys! I've just released Guile-CoAP (https://codeberg.org/eris/guile-coap), an implementation of the Constraiend Application Protocol (CoAP) and an update to Guile-ERIS (https://codeberg.org/eris/guile-eris/) that can use CoAP as a block transfer protocol.
<pukkamustard>CoAP might be interesting as netlayer for Spritely as it is itself transport agnostic and runs over TCP, UDP or WebSocket.
<juliana[m]>👀
<juliana[m]>mildly off-topic but is this in any way related to your PR to add distributed substitutes to Guix?
<juliana[m]>er, p2p substitutes? not sure the best description here, but i'm mostly just hoping you know what i'm talking about ;)
<ehmry>juliana[m]: it is. coap isn't designed as a p2p protocol but it does feature bidirectional requests and multicast discovery
<pukkamustard>juliana[m]: Yep, it is. As ehmery mentions CoAP allows more P2P kind of stuff with bidirection requests and discovery. However another big thing is that it allows asynchronous requests.
<pukkamustard>Async requests (or pipelining) is important with ERIS as we decode in small blocks. If for every small block we need to wait for a round-trip to the server, performance is very bad - it is latency-bound.
<juliana[m]>super exciting to see this work is still being done! it's an idea that a friend put into my head a while back and I didn't realize someone had already started working on it (before I ever learned about Guix to boot!)
<pukkamustard>CoAP allows async requests that allows us to send many requests for small blocks and continue decoding content as they come in. The recent release of Guile-ERIS has a lookahead decoder that tries to keep the connection saturated. This all works with some nice Fiberization.