Fork me on GitHub
#clojure-norway
<
2024-02-18
>
teodorlu10:02:24

Bruker dere begrepene “release”, “deploy” og “code review” når dere snakker med nordmenn, eller har dere norske oversettelser dere foretrekker?

👀 1
pez10:02:05

Att döma av den här kanalen och artiklar jag hittat visa den är ni “bättre” en svenskar på att hålla er till ert modersmål. Men kodgranskning är ett ord som de flesta använder i alla fall.

👍 1
teodorlu10:02:41

> kodgranskning Det ordet likte jeg! Kodegranskning! 😁

cjohansen10:02:39

Jeg liker "prodsetting" for deploy. Vi snakker også ofte om "bygget". Vi har bare ett bygg som går rett i prod, så det er underforstått at det handler om release/deploy.

👍 1
cjohansen10:02:07

Vi praktiserer forøvrig parprogrammering, og slipper å finne på noe for "code review" 😁

metal 1
😄 1
cjohansen10:02:46

Når det er nødvendig så ber jeg Magnar om "å se over dette", eventuelt "gå gjennom noe kode med meg".

👍 1
cjohansen10:02:55

Vi gjør faktisk aldri asynkron skriftlig review

👍 1
teodorlu10:02:51

Spennende, jeg hadde inntrykk av at det var noe sånt dere gjorde. Er “prodsette” for deg at koden er i produksjon, uten at den nødvendigvis kjører? --- Teamet jeg jobber i nå holder på å endre seg i retning av hyppigere merge til master. Tidligere: alle jobber med forskjellige ting, all kode skal ha code review i PR før merge og prodsetting, men lite delt innsikt i hverandres kode gjør det vanskelig med code review (kodegranskning). Etter min smak brancher som lever for lenge. Nå: Har startet med mye parprogrammering / ensemble-programmering. “Få ny kode på master uten å brekke ting” har vært vanskelig, fordi det ikke har vært noe opplegg for å prodsette kode uten å kjøre den nye koden (feature-flagg). En utfordring har vært å gi folk på teamet som er vandt til å kode selv lenge, lage PR og gå i prod trygghet og oversikt. Trygghet: tidligere har de visst at noen andre kommer til å lese koden før den “kommer inn”. Oversikt: tidligere har PR-er blitt brukt til å holde oversikt over hva vi driver med. Hvis en feature skal lages i mange PR-er, må man tenke annerledes for å vite hvilken PR som hører hjemme i hvilken feature.

cjohansen11:02:28

> Er “prodsette” for deg at koden er i produksjon, uten at den nødvendigvis kjører? Jepp. Vi har ikke noe system for toggling, men det hender at det går ut kode som fungerer, men ikke er fullstendig - og heller ikke er “kobla på“. Men stort sett går det ut ting som kjører.

👍 1
cjohansen11:02:45

Hvor stort er teamet @U3X7174KS?

teodorlu11:02:24

Før jul var det 3 personer. Jeg og en til kom med tidlig i januar. Fredag fikk vi enda en, så nå er vi 6.

teodorlu11:02:09

6 utviklere* Vi har også en god prosjektleder og en god "forretningsperson"

cjohansen11:02:16

Ja, leste det sånn 🙂

cjohansen11:02:21

Det eneste som teller 😄

cjohansen11:02:29

Det er et mysterie for meg at selv så små team som 3 pers velger seg såppass byråkratisk samarbeidsform

teodorlu11:02:12

Ja, enig. Men tidligere har man gitt de tre personene helt forskjellige ting å gjøre, og spurt hver enkelt om estimater på hva de selv kan få til. Så jeg skjønner at det har blitt litt vanskelig å få til godt samarbeid. Siden jul har vi fått fokusert mer på samme ting, og da er det lettere å argumentere for feks parprogrammering. (både lettere å argumentere til andre utviklere, til prosjektleder, og til andre i organisasjonen)

cjohansen11:02:38

Helt klassisk

cjohansen11:02:31

Interessant nok så blir code reviews nesten enda mer håpløst i en sånn setting, for man får veldig liten kjennskap til hverandres hjørne av kodebasen, med mindre man setter av godt med tid til å motvirke det (noe de aller færreste gjør).

👍 1
teodorlu14:02:19

Det stemmer ganske bra i vårt tilfelle også 🙂 Et grep som har gjort det litt bedre er at den som har skrevet koden nå tar stilling til hva personen ønsker review på. Er personen trygg på det personen har gjort og vil gå videre? Eller er det noe som var vanskelig og potensielt kan gjøres bedre?

👍 1
msolli07:02:14

Jeg bruker, eller prøver å bruke, ordet “sjøsette” for “deploy”.

❤️ 1
💯 1
cjohansen07:02:27

Sjøsette er fint, det bruker jeg av og til også 🙂

cjohansen07:02:51

Tror jeg bruker det for litt større greier - første prodsetting av nytt system, stor feature osv

pez08:02:41

Jag har sällan någon användning för ordet deploy. För mig är det sista steget när en ny version släpps. Så om jag behöver referera till det blir det något typ “installera”.

👍 1
pez08:02:01

Ungefär: > Nu ska vi släppa ut ny version (Now we are releasing a new version). För att göra det behöver vi bygga saker och installera dem (To do that we need to build things and deploy them).

👍 1
cjohansen08:02:24

"släppa" er da din deploy tenker jeg 🙂

1
pez08:02:45

Jag tänker att det är mitt ord på release. 😃

1
pez08:02:22

Ordet release blir på svenska översatt till olika saker beroende sammanhang. Dels är det det övergripande begreppet för att göra och släppa en ny version. Men det kan också vara att lansera något. En ny funktion, en ny produkt.

pez08:02:17

I ett större sammanhang kan släppet av en release ses som en installation (deploy), antar jag.

cjohansen08:02:38

Jeg er så vant til at release og deploy er det samme at jeg tenkte ikke engang på at det kan være separate ting 🙈

pez08:02:00

Jag tror inte att de är så skilda begrepp för de flesta engelsktalande heller. Men det beror på vad man har för processer. Man kan t ex tänka sig att i stort sett all kod utvecklas och på, och släpps från stammen, kanske bakom flaggor. Sedan är det produkt-/marknadsfolk som bestämmer vad som utgör en release. De gör marknadsföringsmaterial och slår på flaggor för en produkt som rimlar. Då blir det för varje funktion en deploy när den tas in på stammen (commit) och ytterligare en deploy varje gång en flagga gör att den når flera användare. Man kan också se det som händer när marknadsavdelningen släpper ut sin konfiguration av flaggorna och materialet (releasen) som en deploy.

1
leifericf12:02:51

@magnars, er det https://docs.datomic.com/pro/getting-started/dev-setup.html du tidligere nevnte at du kjører i produksjon uten problemer, selv om det ikke er anbefalt av Datomic? Jeg mener å huske du nevnte noe sånt en gang (kan det ha vært i sammenheng med Adventur Delux?), men er usikker på om jeg husker feil.

cjohansen12:02:45

Stemmer. Det som ikke er anbefalt i prod er å kjøre datomic:dev:// protokollen - den lagrer en h2-database på disk.

💡 1
cjohansen12:02:34

Nå som pro er gratis er SQLite et fint alternativ. dev-protokollen er dog det raskeste å komme igang med, og du kan bytte senere.

leifericf12:02:33

Støtter Datmoic også PostreSQL? :thinking_face:

magnars19:02:58

Jeg kjørte Datomic Free på Adventur frem til nå i jula. Den er gammel som haugene. Kjører nå Datomic Pro med sqlite. Fungerer helt supert.

💡 1
leifericf20:02:04

Er det noen spesielle grunner til at dere velger SQLite fremfor PostgreSQL eller andre alternativer? :thinking_face: Foruten PostgreSQL har jeg mest erfaring med "enterprise" greier fra Oracle og Microsoft. Og analytiske databaser som Snowflake og BigQuery.

cjohansen20:02:20

Datomic bruker disse bare som et filsystem for å skrive data. SQLite er lett å kjøre, for det er en enkelt prosess mot en fil. I tillegg er den optimalisert for én skriveprosess og mange leseprosesser, akkurat som Datomic, og passer dermed godt.

💡 2
cjohansen20:02:47

Om du allerede har Postgres oppe og går er det helt fint, men jeg hadde ikke giddet å kjøre opp postgres i ens ærend hvis jeg slapp unna med SQLite.

👍 1
cjohansen20:02:38

Og jeg hadde ihvertfall ikke kjørt opp noe lisensbelagte greier 😅

cjohansen20:02:24

At folk betaler for Oracle og MS SQL Server i en verden med SÅ mange gode og gratis alternativer er helt uforståelig for meg.

💯 2
leifericf20:02:27

Det gir mening, ja! PostgreSQL er ganske rask og har en del kule/unike features, men de skal vel sjeldent eller aldri brukes her.

cjohansen20:02:50

De er irrelevante for Datomic sin del. Den trenger bare et trygt sted å persistere data.

👍 1
cjohansen20:02:11

Du kommer aldri til å lese noen ting rett fra tabellene som Datomic oppretter

👍 1
cjohansen20:02:45

Du bruker ikke cat på filene som postgres legger på disk heller, liksom 😄

😂 1
leifericf20:02:38

Nei, jeg bruker mapcat på dem 😎

leifericf20:02:43

Oracle og MS SQL Server handler mest om 27/4 support, SLA-er og garantier/forsikringer tror jeg, ikke selve databasen så mye. Men hvis de har nedetid utover avtalen så kan man få dekket tapet sitt, etc. Også får man dedikerte kontaktpersoner og utviklere som kan hjelpe med ting. For noen store bedrifter er det en relativt billig forsikring, selv om det koster et par mill i året.

cjohansen20:02:11

Du får support og drift av open source tjenester også

cjohansen20:02:22

Dessuten: hvor ofte er det feil på selve databasen?

cjohansen20:02:40

Nærmeste jeg kommer er å ha vært utfor en bug i JVM-en, som atpåtil var fiksa da jeg oppdaget den

leifericf20:02:41

Jepp! Jeg vil ikke si jeg synes det er en god idé 😅 Og jeg har prøvd å foreslå å spare en del penger der før. Men forretningsfolk uten teknisk peiling, som ikke stoler på utviklerne de har ansatt, må betale "moron tax" for å føle seg bra, hehe

cjohansen20:02:57

Ja, det er nok der Oracle tjener pengene sine

💯 1
leifericf20:02:02

Man kan ofte ansette et lite team med hardcore databasenerder for halve prisen.

cjohansen20:02:14

Jeg ville mye heller gjort det

💯 1
augustl07:02:38

snakket med en i logistikkbransjen nylig som er oppgitt over at ingenting har blitt bedre i de 20 årene han har jobbet i bransjen, og at alle systemer er noe selgere selger til ledere, uten å innvolvere faktiske brukere og fagfolk

leifericf08:02:09

Retail lider av det samme. De fleste retail organisasjoner er drevet av forretningsfolk som ikke er tekniske på noen måte. Problemet er at disse typene ofte har for mye selvtillit og for lite selvinnsikt til å forstå sine egne begrensninger og søke råd fra fagfolk. Istedenfor å stole på tekniske ansatte bruker de masse penger på kjøpte systemer og konsulenter. "Dette koster mye, så det er sikkert bra!"

😂 1
Ivar Refsdal09:02:17

@magnars / @U9MKYDN4Q Korleis ser ein JDBC sqlite Datomic connection string ut? Eksempel? Trengst det å endrast på transactor classpath? Reknar med at ein køyrer ein standalone transactor?

magnars09:02:23

@UGJE0MM0W Her fra Adventur:

"datomic:"
Ja, du må fortsatt kjøre en transactor, og ja, du må legge til sqlite-jdbc-jar'en på transactorens classpath.

👀 1
🙌 2
magnars09:02:15

Fra transactor.properties:

sql-url=jdbc:sqlite:/data/datomic-sqlite.db
sql-driver-class=org.sqlite.JDBC

👀 1
Ivar Refsdal09:02:30

Mange takk 👍

augustl09:02:01

og peer har direkte tilgang på storage, og går ikke via transactor 😻

💡 2
Ivar Refsdal09:02:01

Aha - så dei må dela disk? Det gjev vel meining det ja

leifericf09:02:34

Nice, takk for eksemplene, @magnars! Det jeg sliter mest med er at det er så mange valg man må ta stilling til for å komme i gang. Det gjør jo Datmoic mer fleksibelt når de store brikkene er adskilte, så jeg forstår hvorfor det er sånn.

cjohansen09:02:50

Mye å sette seg inn i ja. Det aller nest letteste er å sette opp med dev-protokollen på én maskin og jobbe mot disk. Lær deg å jobbe med systemet, og finn ut av de andre tingene når du skal i prod 🙂 (Det aller enkleste kommer under denne)

👍 1
magnars09:02:41

Ja, eller avhengig av dine behov så kan du jo også bare begynne med en in-mem database.

💯 1
💡 1
cjohansen09:02:54

Enda enklere!

cjohansen09:02:43

Jeg modifiserte min lettvinte bruk av "aller enkleste" 🙈

leifericf09:02:05

Right, så typ: 1. In-memory 2. Disk 3. SQLite Lokalt på egen maskin. Og ikke tenke på deployment av kompoenter til andre maskinger før det er nødvendig.

cjohansen09:02:36

For in-memory trenger du kun peer-biblioteket, trenger ikke engang transactoren

👍 1
leifericf09:02:38

Og Peer Library (ikke Client Library).

👍 1
leifericf09:02:31

Kanskje jeg skal ta meg tid til å skrive en liten "How to Approach Learning Datomic" guide når jeg graver her.

❤️ 3
augustl09:02:40

da det er sagt er det ikke akkurat superkomplisert å bruker docker compose til å fyre opp postgres og la datomic snakke med den lokalt, hvis det ender opp med å være prod-oppsettet. Men, det vil også være nøyaktig 100% likt med sqlite/dev/memory lokalt og postgres i prod, siden database/storage bare lagrer ugjennomsiktige komprimerte blobber med EDN i et key/value-oppsett. Så det gjør ikke noe å ha ulike oppsett dev og prod

cjohansen09:02:33

Livet er så mye lystigere hvis man kan slippe å trekke Docker inn i bildet 😅

leifericf09:02:33

Dette med Transactor or Peer Server forvirrer meg også litt.

magnars09:02:44

Peer Server er for Client

augustl09:02:49

Datomic: databasen for de som vil kjøre join-spørringer mellom DynamoDB, Oracle og Excel-regneark

magnars09:02:12

Ikke rot deg borti Client. Det er en langt mindre interessant database.

👍 2
leifericf09:02:36

Og valget mellom "Datomic Pro" og "Datomic Peer" download. Det er lite info på siden som forteller hvorfor man vil ha den ene eller den andre.

magnars09:02:43

"Hva om Datomic lignet litt mer på alle andre databaser, og tapte mesteparten av sine fordeler i samme slengen?"

😂 2
cjohansen09:02:14

@U01PE7630AC Enig i at det er litt villedende, men jeg vil gjette på at det handler om betalt support vs ingen support

cjohansen09:02:20

Altså: Du vil ha peer

👍 1
augustl09:02:26

ser på client som en nødvendig onde om du på død og liv skal gjøre spørringer i serverless/lambda og andre kortlevende prosesser

cjohansen09:02:18

Jeg har brukt Datomic client fra både Java og JavaScript. Da blir Datomic et mye vanskeligere innsalg, for det er rimelig upraktiske greier.

magnars09:02:19

Jeg gjetter på at "Datomic Pro" er transactoren.

💡 2
cjohansen09:02:46

Sånn må det være :man-facepalming:

magnars09:02:17

men ja, peer til prosessen din:

[com.datomic/peer "1.0.7021"]
(her fra Adventur igjen)

leifericf09:02:55

Så hvis jeg vil gjøre in-mem lokalt på min egen maskin så trenger jeg kun en dep i min deps.edn? Ikke noe download.

augustl09:02:08

noen må ha working set av dataene i RAM, peer lar deg ha det i appen din, og det er helt 💥 😻

leifericf09:02:04

Det er jo egentlig helt sykt fett da! Hvis man kun trenger ephemeral state for brukersesjoner.

augustl09:02:55

kan man si at markedsføring ikke er Clojure/Datomic-folket sin sterkeste side? 😄

😅 2
augustl09:02:40

eventuelt at paradigmer som er totalt annerledes fra alt annet og løser problemer folk ikke vet de har er noe av det vanskeligste å markedsføre

Ivar Refsdal09:02:45

> det vil også være nøyaktig 100% likt med sqlite/dev/memory lokalt og postgres i prod Mja, når data vert sendt over nettverket (som ikkje skjer med in-memory), så får du (litt) andre typer på dataa om du har databasefunksjoner. Datoms returnert vert også returnert som ein vektor i in-mem, men som ei liste (`java.util.Arrays$ArrayList`) over nettverket.

💯 1
💡 1
leifericf09:02:25

En av tingene jeg elsket med Erlang/OTP (og Elixir) var tilgangen til https://www.erlang.org/doc/man/ets.html, https://www.erlang.org/doc/man/dets og https://www.erlang.org/doc/man/mnesia.html. Det er persistence innebygget i selve språket/standardbiblioteket uten at man må tenke på noe som helst. Det gjorde det sykt enkelt å spare på ting om det så var i minne, på disk eller i en database. Jeg håper litt på at jeg kan tenke på Datomic som det samme for Clojure.

augustl08:02:58

man har eventuelt spit/slurp i Clojure, men Datomic med sqlite bør vel fint kunne brukes til “lightweight” greier og vil jeg tro