Fork me on GitHub
#clojure-norway
<
2023-09-19
>
magnars04:09:48

God morgen!

slipset06:09:05

Morn, morn

augustl06:09:50

Morn, morn, morn, morn!

infosophy06:09:03

(repeat 8 "morn")

2
msolli06:09:33

God morgen!

Jakub Holý (HolyJak)07:09:24

Why so tight-lipped, @infosophy? Let’s go all in! (repeat "morn") FTW!

🔥 2
infosophy07:09:37

Do not feel lazy this morning. 😆

😹 1
augustl07:09:40

jeg liker ikke at repeat tar et tall. Vi har jo take til sånt!

infosophy07:09:35

Jupp. Men (repeat 8 "morn") og (take 8 (repeat "morn")) skal være synonyme. Har ikke problem med at repeat tar et tall, mer med rekkefølgen på parameterene. Og synes uansett at take-varianten er mer lesevennlig, selv om den er mer omstendelig og verbos.

augustl07:09:00

implementasjonen av repeat med 2 args før reducers: (take n (repeat x))

👍 1
augustl07:09:34

men nå er den et objekt som implementerer IReduce. Dem reducers!

augustl07:09:13

apropos gårsdagens hot take fra twitter om at objekter er veldig dugandes til å håndtere abstrakte greier vi programmerere lager 😄

augustl07:09:41

repeat er implementert med OO 😱

augustl08:09:57

repeat puts the oo in Cloojure

infosophy08:09:03

Gjør ikke cycle ting på omlag samme måte?

infosophy08:09:46

`(defn cycle "Returns a lazy (infinite!) sequence of repetitions of the items in coll." {:added "1.0" :static true} [coll] (clojure.lang.Cycle/create (seq coll)))`

augustl08:09:29

state og oppførsel på ett og samme sted :hugging_face:

augustl08:09:01

men fra spøk til alvor, OO for å implementere datastrukturer i et programmeringsspråk er vel ikke det samme som OO for å mappe et domene i en CRUD-app

💯 1
infosophy08:09:07

Kriteriene for hva som er idiomatisk blir veldig forskjellige.

leifericf08:09:02

Jeg har kanskje noe positivt å si om OO eller typesystemer mer generelt, særlig algebraiske typesystemer á la Haskell og F#: Det er ganske artig og intellektuelt tilfredsstillende å modellere ting med dem, kombinere dem på ulike måter, etc. Det er tilfredsstillende på samme måte som å gjøre puslespill eller bygge korthus, selv om det er ikke spesielt produktivt. Litt som å rake sand på en måte. Men det er ekstremt frustrerende når man nesten er ferdig og finner ut at det mangler noen brikker til puslespillet, korthuset raser sammen, eller du trår på raka og får skaftet i fleisen.

😂 3
🔥 1
teodorlu08:09:22

Jeg har noe faktisk positivt å si om typesystemer: du får en håndfast måte å gjøre design av typer og operasjoner før du skriver koden. Jeg digger feks denne presentasjonen av Conal Elliot. Der bruker han typer til å grave seg dypere og dypere ned i problemet, inntil han har funnet en god abstraksjon. https://www.youtube.com/watch?v=bmKYiUOEo2A

👍 1
teodorlu08:09:42

Eric Normand har også en del innhold om denotational design. Se feks her: https://ericnormand.me/podcast/why-do-i-like-denotational-design

👀 1
leifericf09:09:15

Jeg blir faktisk positivt overrasket noen ganger over hvor bra tooling man har i JetBrains Rider for C# og .NET. Dette er kanskje blasfemi her inne, men jeg synes det er relativt enkelt å jobbe uten REPL, og stort sett fungerer koden første eller andre gang jeg kompilerer og kjører den. Men når det smeller i runtime kan det være utrolig vanskelig å finne ut hva feilen er pga. rammeverket vårt som bruker mye reflection, dependency injection, og indirekte kommunikasjon med resten av systemet via Azure Service Bus.

leifericf09:09:18

Dette minner meg forresten om den éne episoden av #clojuredesign-podcast hvor de prater om at første steget i design-prosessen deres er å definere datastrukturene som representerer "tingene" systemet skal prosessere, vanligvis som maps med namespaced keys.

1
augustl09:09:12

jeg føler meg ikke sånn super-avhengig av REPL, men må innrømme at det blir mere og mere vondt å jobbe med f.eks Kotlin eller Node og måtte styre litt for å få kalt en funksjon

augustl08:09:31

og det gir jo faktisk mening at Cycle utvider ASeq, ingen dissonans der. Nokså flat og ryddig taksonomi, som ikke mapper “verden”. Blir vanskeligere når Cow extends Animal, eller Person extends Hibernate

emil0r08:09:50

God morgon

terjesb08:09:14

Morn! Java 21 i dag:)

🚀 1
augustl08:09:22

som proff JVM-utvikler, som følger lite med på java-versjoner og sånt, og har lyst til å holde seg oppdatert, så er det perfekte stedet å gå til for å finne den informasjonen: [Fyll ut]

👀 1
Zeniten08:09:43

Jeg har sett på en del av videoene som finnes her, i det seneste: https://www.youtube.com/@java Det er noen gode oppsummeringsvideoer, og forskjellige talks fra JVM Language Summit har vært interessante.

💯 1
terjesb08:09:10

Det kommer sikkert noen oppsummeringer andre steder, ellers et par kilder: https://mastodon.social/@openjdk https://www.youtube.com/playlist?list=PLX8CzqL3ArzVHAHWowaXwYFlLk78D8RvL JavaZone hadde også et foredrag om 17-21, ikke sett ennå. Kan også anbefale Schedule/status/features på de enkelte releasene, f.eks. https://openjdk.org/projects/jdk/21/ I praksis har jeg brukt nye virtual threads med java.util.concurrent.Semaphore, som funker utmerket. F.eks. gjøre mange ting, max 5 om gangen:

(let [semaphore (java.util.concurrent.Semaphore. 5)]
  (doseq [morn (range 1000000)]
    (Thread/startVirtualThread
     (fn []
       (try
         (.acquire semaphore)
         ;; task
         (finally
           (.release semaphore)))))))

🙌 1
Ivar Refsdal10:09:48

Eg sjekker (av og til) https://inside.java/ (som var lenka til i fyrste youtube-kanalen)

augustl10:09:40

gleder meg til AI kan løse dette. “Gi meg ukentlig oppsummering av informasjon som er faglig relevant for meg”

kolstae12:09:29

Jeg synes jeg Java Annotated Monthly (https://blog.jetbrains.com/idea/2023/09/java-annotated-monthly-september-2023/) fra JetBrains er ganske bra. Ser ikke ut til at du får RSS for bare den delen av bloggen da, så det blir kanskje mye annet støy du ikke er interessert i

augustl12:09:30

smooth, takker 🙂