Fork me on GitHub
#hyperfiddle
<
2023-11-13
>
joshcho02:11:29

Looking into denotational design by Conal Elliott lately, perhaps for designing electric-adjacent tools (like state management). Any opinions/resources?

joshcho02:11:09

He created FRP iirc

Vincent22:11:44

Browsing that video briefly, his breakdowns of fn inputs/outputs is very good and something I do before making components, usually in a sketching notebook. While I see value in his delivery, I also think that monads or things that have "laws of composability" are fairly unrealistic in programming, or the kinds of programming i delve into heavily. Things do not get added equally if the sequence varies, which I find to be the key to developing fast: determining build sequence

👍 1
Dustin Getz14:11:55

I think a lot about denotative design and consider managed network to be a mandatory stepping stone to getting there (enabling full stack system as a function as a starting point to even thinking about these ideas)

Dustin Getz14:11:49

it is extremely hard, imo it reduces to "how do we express CRUD apps in a mathematical way such that the theory of calculus, integrals, diff eqns etc (and discrete analogues) is applicable to them"

❤️ 1
Dustin Getz14:11:26

this question is one of my personal pet topics and objectives

Dustin Getz14:11:23

to summarize, i dont think the technology is there yet, except for Electric, which is closing in and perhaps making it possible for the first time to start to ask these questions

Dustin Getz14:11:46

whatever the answer is, it will be taught in high school in 50 years, like algebra

😁 3
joshcho01:11:46

i spoke with conal for 3 hrs this morning and it was mindblowing. gonna keep in regular touch

Dustin Getz01:11:09

trip report !

joshcho01:11:23

just emailed him

joshcho01:11:40

yeah idk i need to rethink everything lmao

joshcho01:11:52

u should really talk to him @U09K620SG

joshcho01:11:15

i can intro obv

Dustin Getz01:11:15

he made it pretty clear what he thinks of clojure (very negative)

Dustin Getz01:11:36

we have different goals

Dustin Getz01:11:06

what did he say that changed your view on something?

joshcho02:11:48

his interest in abstractions

joshcho02:11:59

and getting to the core of the question

joshcho02:11:42

he actually did not discount clj/forth or anything in our talk, he advocated for agda as the “design language”

joshcho02:11:59

implement it however u want in whichever tech stack is most fitting

wei14:11:34

sometimes a ui4/button will render as busy/disabled even after a hard refresh. i assume it thinks there is a remote effect still running. what are some reasons this might happen? can i clear all pending effects after a refresh? fwiw here's the relevant code:

(defn toggle-scope [[scope-template-id size :as scope-template-pointer] added-scopes & [default-val]]
  (if-let [matching-scopes (seq
                            (filter (comp (partial = scope-template-pointer)
                                          (juxt :scope-template-id :size)
                                          second)
                                    added-scopes))]
    (doseq [[scope-id _] matching-scopes]
      (foreign-append! @scopes-depot
                       [:delete {:bid-id BID-ID
                                 :scope-id scope-id}]))
    (foreign-append! @scopes-depot
                     [:upsert (merge {:bid-id BID-ID
                                      :scope-id (util/uuid)
                                      :size size}
                                     default-val)])))

(ui/button
 (e/fn []
   (e/server (toggle-scope [id size] (e/snapshot added-scopes)
                           (assoc DEFAULT_VAL :scope-template-id id))))
 (dom/props
  {:class (if (some
               (comp (partial = [id size])
                     (juxt :scope-template-id :size)
                     second)
               added-scopes)
            "text-white bg-teal-600"
            "text-gray-500 bg-white")})
 (text (str size size-unit)))