Fork me on GitHub
#clojure-norway
<
2024-01-13
>
teodorlu11:01:21

Morn! Clojure-win på jobb på onsdag - med team der andre ikke har brukt clojure før. Vi skulle prodsette kode som krevde endringer i 120 json-filer på disk. Oversikten over utrullingen var i et Excel-ark, vi gjorde det lett å copy-paste deler av en rad for å styre scriptet. Vi startet på mandag med å parprogrammere et babashka-script for å gjøre dette programmatisk. Fire personer, én PC, én Clojure-fil. Tirsdagen måtte jeg gjøre noe annet da vi egentlig skulle kode mer sammen. Resultatet ble at én på teamet måtte kjøre ting fra sin PC, som gikk fint. Onsdagen rullet vi ut endringene. Alle satt i samme møterom, og vi så på én skjerm hva som skjedde. Eneste feil var en linje som var glømt i Excel-arket, det skulle egentlig vært 121 json-filer. --- Så hvorfor skriver jeg dette her? Jeg liker jo skrive ting i Clojure, og jobber som enkelte her i team som ikke bruker Clojure som hovedverktøy. Jeg følte det som fungerte godt denne uka var å gjøre alle trygge på det som ble laget, og ved å løse et ekte problem. At dette i tillegg ikke er kode teamet trenger å drifte senere gjorde det tryggere for alle å si “ok, vi prøver Clojure”. Jeg tror i tillegg folk synes løsningen ble bra. Den samme jobben kunne vært gjort med bash og jq, eller javascript. Men babashka, god støtte for data og babashka.fs ga en ren løsning med lettleselig kode som var lett å kjøre. Og vi kunne lese en git-diff av JSON-filene for å kontrollere om ting hadde gått rett, i stedet for å lese kode og si “dette ser ut som den gjør riktig ting, vi kjører og ser hva som skjer”.

❤️ 2
🥳 5
1
leifericf12:01:47

Nesten nøyaktig samme historie som mitt første usecase for Babashka hos Elkjøp! Oppdatere alle appsettings.json filer for ~400 mikrotjenester.

😁 1
leifericf12:01:23

Brukte for øvrig samme kode for å gjøre oppdateringer i YAML-filer for Kubernetes også.

👍 1
leifericf12:01:51

Men det var mutters alene og med null erfaring med Babashka på forhånd, lol

🔥 1
leifericf12:01:55

Folk ble litt blåst av banen når jeg lagde én tom bb.edn og én Clojure fil, og gjorde sånne ting dynamisk via REPL direkte i VS Code.

😁 1
leifericf12:01:30

Hører rykter om at de har fortsatt å bruke Clojure koden min, så kanskje det dukker opp noen her på Slack etterhvert, haha

🤞 2
teodorlu12:01:58

@U01PE7630AC fikk du problemer med formatering? vår versjon 1 tok inn json og skrev ut med cheshire, pretty-printet med “indent 4”. I versjon 2 sorterte jeg keys i alle maps. Det ga fremdeles gigantiske git diffs, folk hadde ikke sortert nøkler før. Så i versjon 3 endte jeg opp med å shelle ut til jq (😠) bare for å unngå diffs, siden jq bevarer rekkefølge som default.

leifericf12:01:23
replied to a thread:Morn! Clojure-win på jobb på onsdag - med team der andre ikke har brukt clojure før. Vi skulle prodsette kode som krevde endringer i 120 json-filer på disk. Oversikten over utrullingen var i et Excel-ark, vi gjorde det lett å copy-paste deler av en rad for å styre scriptet. Vi startet på mandag med å parprogrammere et babashka-script for å gjøre dette programmatisk. Fire personer, én PC, én Clojure-fil. Tirsdagen måtte jeg gjøre noe annet da vi egentlig skulle kode mer sammen. Resultatet ble at én på teamet måtte kjøre ting fra sin PC, som gikk fint. Onsdagen rullet vi ut endringene. Alle satt i samme møterom, og vi så på én skjerm hva som skjedde. Eneste feil var en linje som var glømt i Excel-arket, det skulle egentlig vært _121_ json-filer. --- Så hvorfor skriver jeg dette her? Jeg liker jo skrive ting i Clojure, og jobber som enkelte her i team som ikke bruker Clojure som hovedverktøy. Jeg følte det som fungerte godt denne uka var å gjøre alle trygge på det som ble laget, og ved å løse et ekte problem. At dette i tillegg ikke er kode teamet trenger å drifte senere gjorde det tryggere for alle å si “ok, vi prøver Clojure”. Jeg tror i tillegg folk synes løsningen ble bra. Den samme jobben kunne vært gjort med bash og jq, eller javascript. Men babashka, god støtte for data og `babashka.fs` ga en ren løsning med lettleselig kode som var lett å kjøre. Og vi kunne lese en git-diff av JSON-filene for å kontrollere om ting hadde gått rett, i stedet for å lese kode og si “dette ser ut som den gjør riktig ting, vi kjører og ser hva som skjer”.

Brukte for øvrig samme kode for å gjøre oppdateringer i YAML-filer for Kubernetes også.

👍 1