Fork me on GitHub
#clojure-norway
<
2023-08-25
>
leifericf07:08:18

God morgen, godtfolk! Ha en fabelaktig og parantesrik dag.

leifericf08:08:04

Jeg installerte nettopp https://www.postman.com for å prøvekjøre et API fra en leverandør, så kom jeg til å tenke på en ting… Kanskje jeg like greit kan gjøre det med Clojure? Da blir det litt enklere å dele med andre også. Finnes det et bibliotek for å konsumere og teste et HTTP-basert API, eller bruker man bare et "vanlig HTTP bibliotek" à la https://github.com/http-kit/http-kit? Hvordan gjør dere sånt? 😊 Edit: Oooh, jeg fant https://practical.li/blog/posts/consuming-apis-with-clojure/, som faktisk anbefaler Postman til slutt 😅 Edit 2: Postman er faktisk ganske nice!

anders09:08:07

Om du sitter i Emacs er restclient.el også et greit alternativ

8
emacs-spin 2
slipset09:08:56

En fredagstanke. Hvis funksjonskomposisjon er tungvindt ender man opp med en større andel bivirkningsfunksjoner.

4
2
cjohansen09:08:04

Vennligst utbroder 🙂

slipset09:08:38

export const doSomeTransformation = thing => { ... pure fn}

export const fetchMeAThing = id => {... sideffecting fn}

export const fetchAndTransform = id => doSomeTransformation(fetchMeAthing(id))
Bare som et trivielt eksempel. Jeg tror at for den gjengse TS utvikler så er det mer naturlig å skrive
export const fetchAndTransform = id => {
  ..sideffecting fn
  .. pure fn
}
En av mange grunner til dette tror jeg kan være at de har verken comp eller ->> som dytter deg i retningen av å skrive mindre funksjoner som kan komponeres.

odinodin09:08:29

blir spennende når js får støtte for pipeline-operatoren

slipset09:08:42

Får JS det?

odinodin09:08:14

det finnes et forslag

cjohansen09:08:29

Det har foreligget en del år tror jeg?

cjohansen09:08:00

ugh, de har implementert as-> 🤢

slipset09:08:00

Det er litt som as-> ?

cjohansen09:08:20

“Hva om vi baserer oss på den verste pipelinen i clojure?”

cjohansen09:08:25

Veldig on-brand

😂 2
slipset09:08:32

Akkurat det jeg ville uttrykke 🙂

Zeniten09:08:51

Hvorfor liker dere ikke as->?

cjohansen09:08:39

Tung å lese, tilrettelegger for å threade sammen ting som ikke egentlig passer sammen (et problem som heller bør løses ved å skrive om byggeklossene)

Zeniten09:08:43

👌, så slik at man ender opp med enten ren -> eller ren ->>?

cjohansen09:08:11

ja, sånn mer eller mindre 🙂

👌 2
augustl10:08:07

Elixir har samme operator, ved samme navn

magnars12:08:49

Relevant bloggpost 😅 Hemmeligheten i clojure.core: https://www.kodemaker.no/blogg/2020-06-thread-first-and-last/

🤯 2
Zeniten13:08:37

N1, men hvorfor introdusere denne forskjellen mellom seq og map, egentlig? Hva om man bare hadde hatt ->? Er det noe mer her enn at det konseptuelt blir rotete å blande sammen "enheter" og "mengder" slik?

teodorlu14:08:25

Jeg føler på dette når jeg skriver go! • Styr å opprette data - literals er mer verbose enn i clojure • Styr å bruke immutable transformasjon heller enn å sette felt - finnes ikke stdlib-funksjoner for assoc, update, etc I praksis ender jeg opp med å tenke Immutability på arkitektur, men ikke innad i funksjoner, der setter jeg felter på structs. Gjelder Python også.

augustl09:08:00

enig, veldig kjekt med GUI (emacs, postman, intellij sitt, …) for å lefle med HTTP, blir fort knot med escaping og hit og dit med curl på terminalen

😮 2
leifericf10:08:34

Oooh! Jeg bruker jo JetBrains Rider, som bygger på samme tech som IntelliJ. Den har visst noe også! Nice.

odinodin11:08:46

pro tip: Du kan gjøre "copy as curl" fra nettleser og paste det rett inn hos Intellij

💡 2
augustl12:08:26

😇

😁 2
slipset12:08:37

Siden det er fredag passer det med litt selvskryt. Jeg tror https://github.com/clojure/data.json/blob/master/src/test/clojure/clojure/data/json_gen_test.clj er den vakreste koden jeg noensinne har skrevet

chef_kiss 5
2
teodorlu14:08:04

Den testen sier mye om koden uten distraksjoner!

teodorlu14:08:20

Morn! I dag har jeg programmert mer Clojure med to utviklere som ikke hadde skrevet clojure før august i år. Noen refleksjoner: 1. Vi legger vekt på å evaluere uttrykk ofte - helst etter hver endring vi har gjort 2. Vi trener mye på hvordan vi skal få se hva vi gjør. Hvordan kan vi løse dette problemet med REPL? 3. Vi innførte litt strukturell redigering (slurp, raise og expand-region) helt fra starten, og bruker det nå ofte. I litt lengre form på nett: https://play.teod.eu/clojure-survival-kit/ Akkurat i dag har vi slitt litt med hvordan vi skal organisere kode så det ikke blir "map-spaghetti". Hvordan ha kontroll hva som er gyldige funksjoner på data når man ikke har typer. --- Nysgjerrig på hvordan dere ønsker utviklere velkommen til Clojure-kodebaser når de ikke har erfaring med Clojure!

👍 1
isak15:08:53

1. Begynne med ClojureScript hvis mulig (lettere visualisering, raskere syntax feedback, osv 2. Foreslå keybinds som er lett å huske. Man får gjort mye med expand selection som du sier. Jeg foreslår også noen WASD keybinds til de nye (https://calva.io/customizing/#some-custom-bindings), fordi de er lettere å huske.

isak15:08:10

Det med keybinds er litt vannskelig fordi folk er kanskje vant til helt forksjellige ting. For eksempel det at Ctrl-W stenger tab i VS Code er helt crazy synes jeg. Men det er sikkert mange som er vant til det fra browsers.

teodorlu17:08:04

Interessant at du foreslår clojurescript! Vi har kun jobbet med clojure på JVM og babashka fram til nå. Hovedsaklig fordi det er der jeg har erfaring. Har aldri fått jobbet skikkelig med Clojurescript, så jeg er ikke så komfortabel med å veilede der. WASD var et godt poeng! Enig i at ctrl+w for expand-region når man er vant til at det lukker tabs er rart. I Emacs-configen min bruker jeg M-ø!

👍 1