This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-09-19
Channels
- # announcements (1)
- # babashka (40)
- # beginners (84)
- # biff (46)
- # calva (37)
- # cherry (2)
- # cider (18)
- # clj-otel (5)
- # clojure (53)
- # clojure-europe (39)
- # clojure-hungary (12)
- # clojure-norway (40)
- # clojure-sweden (2)
- # clojure-uk (2)
- # clojurescript (6)
- # community-development (21)
- # cursive (28)
- # data-science (12)
- # datomic (3)
- # figwheel-main (2)
- # fulcro (12)
- # graalvm (7)
- # gratitude (1)
- # hyperfiddle (23)
- # integrant (9)
- # jobs (2)
- # leiningen (4)
- # lsp (8)
- # malli (3)
- # missionary (1)
- # off-topic (39)
- # polylith (3)
- # portal (33)
- # practicalli (4)
- # re-frame (3)
- # releases (1)
- # sci (53)
- # solo-full-stack (8)
- # sql (5)
- # timbre (9)
Why so tight-lipped, @infosophy? Let’s go all in! (repeat "morn")
FTW!
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.
apropos gårsdagens hot take fra twitter om at objekter er veldig dugandes til å håndtere abstrakte greier vi programmerere lager 😄
`(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)))`
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
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.
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
Eric Normand har også en del innhold om denotational design. Se feks her: https://ericnormand.me/podcast/why-do-i-like-denotational-design
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.
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.
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
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
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]
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.
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)))))))
Eg sjekker (av og til) https://inside.java/ (som var lenka til i fyrste youtube-kanalen)
gleder meg til AI kan løse dette. “Gi meg ukentlig oppsummering av informasjon som er faglig relevant for meg”
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
newsletter! https://www.jetbrains.com/lp/jam/
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