Fork me on GitHub
#clojure-norway
<
2023-02-14
>
slipset08:02:19

Jeg er glad i partial, fordi det kommuniserer klart hva det er jeg ønsker å gjøre.

slipset08:02:39

Jeg vet at Alex Miller foretrekker a gjøre dette med en #(….)

augustl08:02:23

jeg har nøsting av #(...) på ønskelisten min

augustl08:02:27

(god morgen)

cjohansen09:02:49

Ugod morgen etter den der 😂

😂 2
augustl09:02:03

😂 men jeg får jo lov til å shadowe alt mulig annet rart!

augustl09:02:38

mmm, noice

😱 4
slipset12:02:37

Dette hadde ikke kommet langt i en code-review hos Ardoq

augustl12:02:54

den hadde ikke kommet gjennom compileren heller forsåvidt

slipset12:02:37

Og du koder i en blanding av norsk og engelsk. Herregud.

slipset12:02:00

scanned og skannet?!?!?!

augustl12:02:53

er greit å slippe å oversette domenet, men det er vanskelig å holde tunga rett i munnen på konvensjonen “teknisk på engelsk, domene på norsk”

cjohansen17:02:39

Jeg er ekstremt lite solgt på “domene på norsk”

augustl17:02:14

business på Animalia (som også stort sett er bønder) er veldig glade i norsk :)

cjohansen17:02:50

Det er synd det ikke finnes jordbruk i engelskspråkelige land

slipset17:02:05

Med et språk som Clojure burde man jo da sørge for å oversette språket til Norsk også.

oddsor11:02:24

(clojure.core.norge/oppdater ...) ?

augustl09:02:34

tror kanskje jeg generelt oppdaterer litt for mange lister :thinking_face:

slipset12:02:26

Den anonyme funksjonen som starter med #(and …) er jo mest sannsynlig et begrep i kodebasen din.

augustl12:02:23

(remove (partial is-rfid-query-rad? rfid-backend-query-id)) kunne fungert! Liker ikke å tvinges til å navngi sånne, men

slipset12:02:35

is-rfid-query-rad? Jeez rfid-query-row? is prefix er jo såååå Java.

slipset12:02:18

Jeg tror at kodebasen din blir mye bedre hvis du navngir flere ting.

slipset12:02:33

I allefall hvis du treffer på nivået av ting som navngis.

2
augustl12:02:27

oooh, spennende poeng

augustl12:02:55

litt korttenkt av meg med policyen “naming things er vanskelig, så ikke gjør det”

augustl12:02:09

om man gjør det godt, tilfører det jo utelukkende verdi :thinking_face:

slipset12:02:23

Altfor mange skriver kode som dette

(defn do-something-with-a-list [xs]
  (map #(mange-linjer-med-drit) xs)
I steden for
(defn do-something [x]
   ... mange linjer med drit)
og så et eller annet sted i koden
(map do-something xs)

slipset12:02:55

Men basically, jeg vil kunne lese koden din og forstå domenet gjennom navnene du bruker. Hvis koden din kun er map reduce filter og anonyme fns, så ville jeg tro at det eneste appen din drev med var å manipulere lister.

augustl12:02:00

forsåvidt, tenker på en måte at det ikke tilfører så innmari mye verdi med flere navn i denne koden, når man allerede har det uungåelige navnet remove rfid backend query

(reg-event-db
  ::remove-rfid-backend-query
  (fn [db [_ rfid-backend-query-id]]
    (update db :rfid-scanned-individ-rader
            (fn [xs]
              (remove #(and
                         (= (-> % :type) :rfid-query)
                         (= (-> % :id) rfid-backend-query-id)) xs))))) 

augustl12:02:40

men det kan virke som dette er mere “gammel vane” enn “smart og gjennomtenkt mening” fra min side :thinking_face:

augustl12:02:14

som nevnt andre steder er kanskje main stink her å drive og jobbe så mye med lister. Hadde vært bedre med en (update db :rfid-scanned-individ-rader dissoc rfid-backend-query-id) og så hatt en sort-order på elementene og laget listen i et prepare-steg før rendring av gui eller noe sånt

augustl12:02:20

en slags hoved-regel i datamodellering må være at rådata aldri (?) er lister, det er alltid sets eller maps

augustl12:02:06

lister blir både lett accidentally quadratic (https://accidentallyquadratic.tumblr.com/) og som vi ser her er de knotete å jobbe med

slipset12:02:52

Den koden du limte inn der er veldig interessant. Jeg ser masse sånt i vår frontend-kode (TS) og det jeg ikke liker er at «gullet» ligger (langt) inne i en anonym fn som er super tett koblet til rammeverket du bruker idag. Ardoq er 10 år. Vi har vært gjennom minst tre frontend rammeverk. Tenk så digg om mesteparten av domenekoden var skrevet rammeverkuavhengig. Forteller: «Det er den ikke..»

augustl12:02:22

tenker at det du kaller gull her ikke egentlig er gull, det er bæsj som er unødvendig mekanisk kode siden datastrukturen som er lagt til grunn (en liste) ikke er assosiativ på ID-er fra domenet

slipset12:02:00

YMMV, men poenget er likevel. Navngi koden som uttrykker domenet ditt.

slipset12:02:38

Og gitt korrekt datastruktur blir algoritmen triviell ;)

augustl12:02:11

hadde hibernate rett? Det har en verdi å abstrahere seg 100% bort fra frontendrammeverk, database, … osv siden det kommer til å bli byttet ut, og jo mere kode du kan beholde da, jo bedre?

slipset12:02:23

Og bygg primitiver som kan komponeres

augustl12:02:17

viser Amazon riktig vei her? Forloveden min var inne på amazon her om dagen og fikk opp noen knapper som så ut som de var minst 5 iterasjoner av Amazon sin UX gamle. Aka Amazon kan komponere nytt og gamelt. Aka winning?

slipset12:02:44

Nå er du vanskelig, eller no.

augustl12:02:43

haha, nei altså, amazon har jo klart noe bra her, siden de kan bruke flere verdener samtidig, hvordan de nå enn har fått det til

augustl12:02:06

de har ikke trengt å gjøre jobben “bytte frontendrammeverk”, de kan komponere primitiver/byggeklosser?

augustl12:02:28

er kanskje ikke sånne primitiver du tenkte på

augustl12:02:36

kanskje vi får noe for frontend etter hvert som gjør det samme docker gjorde for deployment. Nå er ikke lenger backend-koden vår avhengig av å kjøre i versjon 6 av Tomcat med java 7, docker-containerene har full frihet til å gjøre hva de vil. Og kanskje på sikt har vi skjønt at “hentig og massering av data for front-end” er en isolert nok del av frontend-koding til at vi kan skrive den koden på én måte, og rendringen og frontend-rammeverket kan være noe annet

slipset12:02:44

La oss for guds skyld håpe at vi ikke får docker for frontend. Da legger jeg på og blir profesjonell dagdriver.

🦥 4
cjohansen09:02:58

Hvis du er så glad i syntaks så kan du jo gi dette Kotlin en sjanse

trollface 6
augustl09:02:04

Kotlin er en glimrende gateway-drug for Java-folk over til Clojure partyparrot

augustl09:02:18

kanskje man kunne brukt partial eller juxt eller noen av disse jeg nesten aldri bruker når man ønsker å gjøre update på en liste, i stedet for å nøste fns

cjohansen09:02:57

Jeg ville plukka ut and-en som en funksjon og brukt #() med update

cjohansen09:02:30

Update på verdier som er lister blir ofte litt ræva

augustl09:02:40

hmm jeg er kanskje litt for avers mot å navngi sånne små “domene-utilities”

slipset12:02:08

Kanskje app’en din ikke er lagdelt nok? Ulikt språk på ulike nivåer kan gjøre susen

augustl09:02:52

rotproblemet her er vel strengt tatt at vi ikke bruker datascript

augustl09:02:02

lister og maps som database :face_with_rolling_eyes:

💯 2
magnars09:02:00

Jeg bruker anledningen til å nok en gang pitche @odinodin sin bloggpost 😄 https://www.kodemaker.no/blogg/2019-06-datascript/

😍 4
odinodin09:02:10

Datascript 😍

👌 6
augustl09:02:35

a wild odinodin appeared!