clojure-norway

leifericf 2025-11-27T05:32:38.899359Z

Morn!

msolli 2025-11-27T05:41:31.814309Z

Morn!

mokr 2025-11-27T05:51:18.371499Z

Morn!

slipset 2025-11-27T06:24:41.296209Z

Mrn!

hypirion 2025-11-27T06:32:37.598099Z

Morn!

boosja 2025-11-27T06:44:37.710729Z

Morn!

slipset 2025-11-27T07:09:20.551569Z

Jeg gleder meg til lunch på mandag!

teodorlu 2025-11-27T07:15:26.228739Z

Morn! Jeg òg!

cjohansen 2025-11-27T07:17:33.056889Z

Morn!

emil0r 2025-11-27T08:07:52.659529Z

Morn

2food 2025-11-27T08:40:14.889159Z

God morgen!

2food 2025-11-27T08:46:15.298529Z

Ble varslet om en bug i produksjon i går kveld pga. en ugyldig mengde (førte til negativ lagermengde). Etter litt jakting fant jeg ut at det skyldtes denne deilige Javascript-godbiten:

3
2food 2025-11-27T08:47:18.087839Z

Jeg må slutte å stole på javascript, selv til de enkleste ting 😆

cjohansen 2025-11-27T08:51:33.058029Z

😂

cjohansen 2025-11-27T08:51:58.291579Z

Float's gonna float

2food 2025-11-27T08:54:19.821519Z

Testet i clojure nå og det skjer jo faktisk der også 🤯

2food 2025-11-27T08:54:58.245059Z

Trodde ikke det var en klassisk "flyttallsfeil" siden det var så lite tall. Men jeg skjønner tydeligvis ikke hvordan flyttall fungerer

cjohansen 2025-11-27T08:55:19.163989Z

Floats er aldri nøyaktige, så det er bare et spørsmål om hvor langt illusjonen strekker.

cjohansen 2025-11-27T08:55:45.678919Z

JavaScript har ikke engang heltall - alt er flyttall. Men den beholder illusjonen så lenge du gjør heltallsberegninger 😅

2food 2025-11-27T08:55:58.776239Z

Ja, det visste jeg jo. Men jeg trodde illusjonen strakk seg litt lenger enn det laughcry

cjohansen 2025-11-27T08:56:10.663049Z

Ikke lett å holde styr på når det går gæernt, så i viktige beregniner er det lurt å være veldig eksplisitt på hvilken presisjon du trenger

cjohansen 2025-11-27T08:56:29.131419Z

Evt ikke gjøre viktige beregninger i nettleseren til folk 😁

💯 2
➕ 1
boosja 2025-11-27T09:10:28.346409Z

Det går vel på at maskiner gjør kalkuleringer i base 2 (binær), mens vi mennesker bruker base 10. Det er i denne translasjonen mellom baser at det kan forekomme rariteter

boosja 2025-11-27T09:10:38.690569Z

Det er noe sånt, tror jeg 🤔

2food 2025-11-27T09:11:49.590789Z

Ja, det stemmer det 👍

2food 2025-11-27T09:15:23.269359Z

Som litt reklame for https://github.com/anteoas/broch, så gjør den alle beregninger i ratio-land og konverterer bare tilbake til double om det ikke taper presisjon. Det gjør at det er 100% presist by default, i bytte mot noe ytelse da selvfølgelig. Men til beregninger med "domenetall", som mengder, så er presisjon viktigst synes jeg.

💯 1
🤘 1
2025-11-27T09:15:45.889579Z

vi serialiserer BigDecimal til string i vårt API, for å si det sånn

pez 2025-11-27T09:16:28.292919Z

(vscode/commands.executeCommand "simpleBrowser.show" (str "https://" (+ 0.1 0.2) ".com"))
> https://0.30000000000000004.com

😆 3
2025-11-27T09:17:07.675339Z

i et annet API vi jobber med så man representere tall i JSON som tall. Heldigvis støtter serialiseringsbiblioteket vårt å skrive BigDecimal som tall i JSON, og å parse dem ut igjen riktig, uten å gå via float eller double. Og de gjør det visst riktig på andre enden. Men det der bryter jo sammen så fort du kommer til JSON.parse i en browser

2025-11-27T09:17:58.639519Z

Big.js ftw

pez 2025-11-27T09:23:19.440469Z

JVM Clojure:

(+ 0.1 0.2) => 0.30000000000000004
(+ 0.1M 0.2) => 0.30000000000000004
(+ 0.1 0.2M)  => 0.30000000000000004
(+ 0.1M 0.2M) => 0.3M

pez 2025-11-27T09:25:13.622709Z

(double (+ 1/10 2/10)) => 0.3

mariuene 2025-11-27T09:35:24.011829Z

😂 1
pez 2025-11-27T09:43:17.225259Z

Orättvist mot JavaScript ju. 😃

gunnar 2025-11-27T10:30:18.152159Z

Vi bruker denne i frontend (kun til presentasjon for avledede verdier): https://github.com/MikeMcl/big.js/

gunnar 2025-11-27T10:30:58.279479Z

Og som @christian767 sier: flyttall er flyttall! Spiller ingen rolle om det er .net, jvm, javascript eller c++

2food 2025-11-27T10:33:58.256349Z

Holder på å dra inn big.js akkurat nå 😄

2025-11-27T10:34:22.176069Z

this is the way

2food 2025-11-27T10:36:47.315619Z

Jeg har selvfølgelig lært alt dette før. Men når noe føles som det er problem bare "i teorien" er det lett at det går i glemmeboken. Når det biter deg i ræven husker man det bedre. Brent barn, og så videre...

2025-11-27T10:37:30.596959Z

friends don't let friends use floating point numbers for business logic

❤️ 1
😅 1
stian 2025-11-27T19:45:05.908239Z

Fixed point ints er også en løsning jeg ofte griper til, spesielt om det er litt ytelse med i bildet.

teodorlu 2025-11-27T09:24:48.174289Z

god morgen!

msolli 2025-11-27T10:30:48.079789Z

Jeg har nettopp åpnet en PR til Nexus hvor jeg er veldig spent på din reaksjon, @christian767 😬: https://github.com/cjohansen/nexus/pull/10 Grunnen til at jeg nevner det her er at det kunne vært artig med en meta-diskusjon om bruk av LLM-er for å få hjelp med å forstå og fikse andres kode. Det føles ikke bra å ha sendt en PR med kode som jeg ikke forstår fullstending, men intensjonen er jo at det skal gjøre det enklere for de som har skrevet koden i utgangspunktet å finne en løsning på et problem. Alternativet er jo ofte å dumpe et problem som et issue og så håpe at noen bruker av egen tid for å fordype seg og fikse det. Håpet mitt her er at den prosessen skal gå mye raskere med det arbeidet jeg og Claude har gjort. Så jeg er veldig interessert i å høre hvordan dette fungerer i praksis. Har noen av dere gjort noe tilsvarende mot et eller annet open source-prosjekt, eller opplevd å motta en slik PR? Hvordan gikk det?

cjohansen 2026-03-30T07:42:17.750309Z

Jeg tror dette er (grunnlaget for) løsningen på problemet: https://github.com/cjohansen/nexus/commit/c1b66ae911d9c484fa2f918e95f7000a9f00be6d Jeg skal følge opp med noen justeringer på action loggen som bruker dette. Skal også ta noen grep for å gjøre feil langt mer synlige i loggen.

cjohansen 2025-11-27T11:53:36.660829Z

Interessant! 😄 Helt fair dette, du har gjort et ærlig stykke arbeid med å dokumentere en bug og foreslå en løsning. Jeg kommer ikke til å merge inn kode jeg selv ikke forstår, uavhengig av hvem som har skrevet den. Fint at du er upfront om prosess, men jeg tror ærlig talt ikke dette er så veldig forskjellig fra andre PRs. Jeg kommer sikkert til å være mer kritisk til koden enn vanlig med denne kunnskapen i bakhodet, men usikkert om det er rasjonelt 😄

hypirion 2025-11-27T12:23:44.245079Z

Det kommer veldig an på hvordan det presenteres tenker jeg. Her har du i det minste gjort en ærlig jobb med å forklare prosessen, og er åpen for at det å åpne PRer der du selv ikke forstår koden er noe noen prosjekter ikke vil godta. Mye av spørsmålet er jo hvor mye "gratisarbeid" du skal legge på OSS-folk. Se f.eks. https://github.com/ocaml/ocaml/pull/14369 på hvordan det ikke skal gjøres. Om det blir en haug med mye mer review fordi folk ikke er villig til å sette seg inn i koden og bare gulper opp AI-slop er det ikke rart folk ikke lenger ønsker å vedlikeholde prosjektene sine.

cjohansen 2025-11-27T12:25:06.254449Z

Suksessfaktoren i PR-en til @msolli er at han evner å formidle til meg hva problemet er. Så kan man jo diskutere om det er en PR eller et issue, kanskje ikke så veldig viktig.

👍 1
cjohansen 2025-11-27T12:26:43.937749Z

Men jeg syns poenget ditt om gratisarbeid er godt @hypirion! Dårlig forklarte/begrunnede issues og PR skaper ganske mye jobb for motparten. Vet ikke om dere så videoen som Peter Taoussanis nylig lagde på temaet, men han hadde mange gode poenger i denne retningen.

msolli 2025-11-27T13:16:17.538939Z

Det kunne vært et issue med en feilende test, som du sier, @christian767. Det meste av arbeidet var å komme dit. Burde kanskje stoppet der, men det var fristende å se hva løsningen kunne være! (Jeg hadde håpet at løsningen var enklere å forstå.)

msolli 2025-11-27T13:19:33.684129Z

Dessuten løser koden i PR-en et faktisk problem som vi har på jobb. Digg, da, at vi kan kjøre på den vha. git-koordinater i deps.edn.

msolli 2025-11-27T13:22:29.470149Z

Den OCaml-PR-en var grotesk, @hypirion. Utover LLM-problematikken som er sentral der, så er det et klassisk problem at noen bruker masse tid på å koke opp en løsning på et problem uten noen designprosess først.

cjohansen 2025-11-27T14:57:45.678009Z

Forøvrig reiser jeg bort for helga i morgen tidlig, så mulig denne blir hengende over helga @msolli!

msolli 2025-11-27T15:17:58.266859Z

For all del! Som sagt, vi har en løsning som funker for oss.

cjohansen 2026-03-29T12:42:08.263049Z

Den ble ikke bare hengende over helga 😅 🙈 Men nå har jeg endelig hatt overskudd til å se på dette @msolli. Har etterlyst litt mer innsikt i use caset ditt på PR-en 😊

msolli 2026-03-29T21:37:44.173629Z

Takk for at kikker på det! Jeg er i fjellheimen noen dager nå, men skal svare deg så snart jeg får anledning.

cjohansen 2026-03-30T06:50:38.980729Z

Det morsomme er at jeg var veldig prima for den feilen da jeg kom til den i går. Etter å ha jobba litt med justeringen på når effekter blir kjørt og state oppdatert så hadde jeg sittet og grunnet litt på hvordan man egentlig skulle kunne trekke linjer fra toppnivå dispatch til async dispatch og eventuelle feil. Jobber med å få på plass litt mer lim for å gi bedre kontroll på det.

teodorlu 2025-11-27T16:21:36.688499Z

https://clojurians.slack.com/archives/C04VAK5U86L/p1764180894731559 Som statsansatt er det litt vanskelig å få gehør for å bruke budsjett på lokaler til konferanser. En del av dere jobber jo i bedrifter! Noen av deres arbeidsgivere som ønsker å sponse den andre Babashka-konferansen? Beløpene er rimelige! 500 Euro for platinum-sponsorer, 250 Euro for gull-sponsorer.

teodorlu 2025-11-27T16:30:45.977619Z

+ Michiel spør om Oslo burde være vert for EuroClojure. Jeg sa Oslo var litt dyrt — men kanskje det ikke hadde vært så dumt. https://clojurians.slack.com/archives/CBJ5CGE0G/p1764260674418319?thread_ts=1764259976.274819&cid=CBJ5CGE0G

💯 1