Fork me on GitHub
#clojure-norway
<
2023-12-21
>
kolstae07:12:10

God morgen!

leifericf07:12:41

Min siste dag på jobb er 29.12. Og i dag er den store Clojure "show and tell" dagen jeg har prøvd å få til i 11 måneder 😅

👏 5
leifericf07:12:05

Bedre sent enn aldri! 😂

cjohansen08:12:28

Vi har polert og pakketert rammeverket(!!!!) vi bygde for å lage Matvaretabellen nå i høst

7
teodorlu10:12:19

så alt jeg ser på https://www.matvaretabellen.no/ er statisk HTML? Imponerende!

💯 1
teodorlu10:12:26

Og utrolig hvor kjapt alt sammen er. Skulle ønske flere nettsider var sånn!

❤️ 1
cjohansen10:12:59

Ja, vi bruker litt tid i bygget, så slipper du å vente når du skal besøke den 🙂

👍 1
cjohansen10:12:07

5000 html-filer på disk, ja 😅

magnars10:12:47

Det hele startet med en drøm om raske nettsider når jeg skulle lage http://kodemaker.no 🙂

👍 1
teodorlu10:12:31

> 5000 html-filer på disk, ja 😅 Men det er vel en ... veldig god idé? Nginx (eller "Google Frontend") er vel raskere enn å generere HTML på serveren eller å generere DOM på klienten?

slipset10:12:45

Jeg husker en jeg studerte med (som da jobbet på USIT) gjorde dette altså, bare genererte opp alle sider. Jeg synes han var kokko da (1997). Jeg synes ikke det nå

😅 1
magnars10:12:49

Ja, det er en veldig god idé 😄 men du betaler for det i byggesteget.

teodorlu10:12:16

Kan jeg spørre hvor lange bygg dere har?

magnars10:12:28

men du får også en veldig fin modell for ops, og et deilig avslappet forhold til at alt fungerer som det skal

👍 1
cjohansen10:12:45

@U3X7174KS ~20min på Github

👍 1
cjohansen10:12:50

Ca halvparten på min maskin

👍 1
slipset10:12:52

Jeg husker første gangen jeg lagde en webdings som i stedenfor å ha en database bare leste en relativt stor csv inn i et atom. 🤯

😄 1
1
cjohansen10:12:29

@U3X7174KS dobbelt så lang tid når vi må regenerere alle excel-filene 🙈

😂 1
magnars10:12:47

det gjør vi heldigvis ikke så ofte

augustl10:12:55

husker å ha fått et godt tips her inne på kanalen om at når ting begynner å bli en smerte, kan man vurdere å gjøre noe med det 😄 Sikkert muligheter for noe halvsmarte cache-greier i bygget f.eks?

1
augustl10:12:04

statis-powerbuild 💪

cjohansen10:12:25

Powerpack har allerede støtte for etags som kan brukes til å ikke regenere ting som ikke endrer seg

cjohansen10:12:40

Da må du versjonere innholdet

👍 1
cjohansen10:12:54

Vi gjør det for å unngå å regenere excel-filer, som er veldig tungt

augustl10:12:56

:version (hash edn-of-content)

magnars10:12:13

er ikke sikkert du sparer så mye tid hvis du må lage content først

cjohansen10:12:21

nei, det funker ikke

cjohansen10:12:31

det som tar lang tid er å lage innholdet 😅

magnars10:12:34

det er ikke hiccup->html som tar tid 😅

augustl10:12:36

ah seff, innholdet er jo ikke edn i en fil her nei

magnars10:12:04

vi har nok pushet litt grensene for størrelsen på en statisk side

cjohansen10:12:08

etag for disse excel-filene er en hash av kilde-innholdet + en versjonsstreng fra koden. Hvis innholdet endrer seg så får du nye excel filer. Om du endrer koden som lager excel-filer må du manuelt bumpe versjonen.

augustl10:12:09

persistent datomic-base og something something t-values? 😄

magnars10:12:19

men det var en fin ting å bryne Powerpack på da 😅

cjohansen10:12:28

absolutt 😄

augustl10:12:58

statis-powercloud - ha en levende byggeserver som står og holder alt varmt 🔥

cjohansen10:12:11

Litt hyggeligere tider på bloggen vår

👍 1
cjohansen10:12:43

Når du bygger hele siten til disk kan du også gjøre andre kule ting, feks har vi full lenkesjekk, så hvis du lager en feil intern-lenke så feiler bygget

magnars10:12:11

Det er også bygget inn i Powerpack 😄

augustl10:12:53

egentlig et litt teit spørsmål, men er nysgjerrig likevel: er det oppnåelig med en slags dynamisk server-basert sak her, som genererer sider on the fly? Det ville kanskje vært en total rewrite og et helt eget prosjekt, og ikke noe som bygger videre på stasis?

cjohansen10:12:45

Målet har vært å ende opp uten en runtime, så da måtte man gått i tenkeboksen i så fall.

magnars11:12:59

@U0MKRS1FX da tenker jeg du egentlig er på jakt etter en vanlig server-prosess med varnish foran.

magnars11:12:16

men da vil du gå glipp av mange av fordelene med statisk generering, slik som at alle sider er kjent og kan verifiseres, og alt det du slipper å gjøre takket være at du ikke har en kjørende prosess på serveren å overvåke og dulle med.

augustl11:12:47

takk 🙂 Driver og forsøker å dytte litt på den store plassen vercel/next har fått i hodet mitt i det siste

teodorlu11:12:35

> men da vil du gå glipp av mange av fordelene med statisk generering, slik som at alle sider er kjent og kan verifiseres, og alt det du slipper å gjøre takket være at du ikke har en kjørende prosess på serveren å overvåke og dulle med. for nå kan dere bare "lese filer og kjøre kode som lager andre filer", mens hvis dere skulle hatt en bygg-cache optimalisert for raske deploys, måtte dere hatt kontroll på logikk for invalidering av cache / hvilke ting som gjøres oppdateres når noe endres?

magnars11:12:27

nei, her snakket vi om forskjellen på å ha en server-prosess kjørende og som lagde sider når noen etterspurte dem, vs å bygge alt på forhånd - i hvert fall var det det jeg snakket om. 🙂

magnars11:12:12

invalidering av cache er heller ikke noe man skal kaste rundt seg med som en "enkel løsning" på noe som helst 😅

teodorlu11:12:22

> nei, her snakket vi om forskjellen på å ha en server-prosess kjørende og som lagde sider når noen etterspurte dem, vs å bygge alt på forhånd - i hvert fall var det det jeg snakket om. 🙂 > > invalidering av cache er heller ikke noe man skal kaste rundt seg med som en "enkel løsning" på noe som helst Såvidt jeg skjønner er vi enige, mulig jeg uttrykker meg dårlig.

augustl11:12:29

vil tro at om man aksepterer å ha all tilstanden levende i en prosess så kan man sjekke der i stedet for filsystemet om en url finnes eller ikke ja

cjohansen11:12:13

Powerpack har en runtime - det er den du jobber med i dev. Men den er laget for å gi deg en god utvikleropplevelse, ikke for å være rask i prod.

cjohansen11:12:32

Så i dev så blir sidene dine generert on demand hver gang

magnars11:12:09

> Såvidt jeg skjønner er vi enige, mulig jeg uttrykker meg dårlig. Jeg trodde du fortsatt snakket om å lage raskere bygg. 🙂

augustl11:12:46

ah seff, det er jo allerede en dev-server ja

cjohansen11:12:40

Hadde blitt litt tungtvindt om du måtte kjøre eksport for hver gang du skulle se på endringene dine i dev 😂

magnars11:12:23

eller sånn som jeg har gjort ved noen tilfeller: bygge hele siten, og så pakketere den inn i et cordova-skall, og så kjøre den på telefonen min, for å se på endringene mine i dev laughsob

laughcry 2
teodorlu11:12:03

> Jeg trodde du fortsatt snakket om å lage raskere bygg. 🙂 Jaa. Jeg tenkte at prosess på serveren og bygg-cache persistent mellom bygg var litt samme ting. Dere snakket om server-prosess, "bygg-cache persistent mellom bygg" var visst utelukkende min idé. Ulempen i begge tilfeller (server-prosess, bygg-cache persistent mellom bygg) blir sånn jeg ser det at du må ta stilling til hva du må invalidere innhold endrer seg. Det slipper dere når dere bare sier "i dev bygger vi hver gang, i prod serverer vi filer". Hvis man skal forsvare å gjøre jobben med å holde styr på hvilke endringer som påvirker hva, må det faktisk være verd det, redusert byggetid er verdt at man må skrive logikken som holder styr på hvilke endringer som påvirker hva.

cjohansen11:12:11

Vi har en persistent bygg-cache mellom bygg. Men som jeg var inne på tidligere så fordrer den at du manuelt tagger koden som genererer sidene. Dette har vi gjort på de mest kostbare sidene, men ikke på alt, for det ville blitt for upraktisk.

cjohansen11:12:51

Men selvfølgelig, vi kunne cacha hele bygget og forsøkt å komme opp med en etag for hver side basert på innholdet og "relevant kode". Da må vi vite hvilken funksjon som lager en side, og i praksis gjøre statisk analyse for å finne avhengighetsgrafen. Det er sikkert mulig, kanskje Powerpack lærer det en gang 😅

magnars11:12:49

én multimetode og det er kjørt 🙈

magnars11:12:24

eller bare dynamisk dispatch generelt

cjohansen11:12:44

hadde jeg trodd det var verdt innsatsen så hadde vi nok hatt det allerede

augustl11:12:53

tenker at ISR (som dem kaller det, incremental static regeneration) er tingen ja, altså en levende sak som bygger “lazy” og on-demand. Om det plutselig skulle være snakk om tusenvis eller titusenvis av sider

augustl11:12:20

gøy å se hvor langt man kan pushe god gammeldags “filer på disk”, da!

cjohansen11:12:38

Jeg tror de aller fleste nettsteder som dette er en passende modell for vil få gode nok byggetider med eksisterende modell

cjohansen11:12:12

På min maskin får jeg 5000 sider på 10min, det er ikke så gæernt

augustl11:12:50

meta: er det ikke rart/trist at når clouden bygger, så gjør den det på shitty maskiner? Clouden er jo clouden, den burde vært 100 ganger så rask som våre usle laptops

cjohansen11:12:03

ja, det er stusselige greier

magnars11:12:03

akkurat det har overrasket meg mange ganger

magnars11:12:28

for ikke å snakke om at en java-prosess som tar millisekunder å starte på min maskin, kan ta et minutt å starte i cloud'en

teodorlu11:12:29

Skjønner, takk for gode forklaringer 🙏

augustl11:12:15

noen må starte opp en github-konkurrent som er gode på dette. Noen her som har erfaring med å starte github-konkurrenter? :man-raising-hand:

😅 1
magnars11:12:46

mistenker at gode maskiner fort blir crypto-farmers

augustl11:12:18

nå har ihvertfall GPU-ene fått et mere direkte matnyttig bruksområde, med alle disse LLM-ene

magnars11:12:45

de bruker GPU-er til det, ja, det visste jeg ikke. 🙂

augustl11:12:20

kan ikke så mye her, har bare sett folk skøye med at “Nå starter vi signups igjen, CTO-en har trålet internett etter GPU-er og fått dem inn i racks” osv

😅 1
cjohansen11:12:35

Tipper Basecamp har fete maskiner til byggene sine :face_holding_back_tears:

augustl11:12:06

det skal DHH ha, han er en influencer den dag i dag

augustl11:12:21

litt mere usikker på nobuild-greiene de driver og pusher

cjohansen08:12:32

Hadde håpet å få klar en demonstrasjonsvideo, men den kommer på nyåret

👍 1
slipset10:12:31

Det ser ut som at nb.json blir lastet hele tiden. Er det nødvendig?

augustl10:12:55

stilig! Har dere noe “smart opplegg” for progressive enhancement?

cjohansen10:12:01

nei, ikke noe smart opplegg

slipset10:12:19

Ser ut som om jeg tok feil

cjohansen10:12:20

@slipset godt spørsmål! Den burde ha vært cacha, men det tror jeg har falt mellom to stoler

slipset10:12:30

Den er cacha, blir alstet fra disk

cjohansen10:12:54

rektig, det var intensjonen 😅

slipset10:12:47

Men når man ser på “porsjonsstørrelse” på geitost, så hentes det ikke ny side?

cjohansen10:12:58

Nei, det skjer på klienten

slipset10:12:16

JUKS!

😂 1
slipset10:12:40

og hva er matomo.php ?

cjohansen10:12:57

Selecten inneholder options med value som er tilsvarende antall gram, og så er det masse sånne rundt på siden:

<span data-portion="0.4" data-value="0.4" data-decimals="1">0,4</span>

cjohansen10:12:27

matomo er et sporingssystem. Vi bruker det uten JavaScript for å få sidevisninger og søkestrenger

magnars10:12:38

Matomo brander seg selv som > Google Analytics alternative that protects your data and your customers' privacy ... og vi har dratt det enda lengre ved å ikke bruke deres javascript, men bare pinge inn sidevisninger med en god gammeldags img-tag.

leifericf15:12:12

En Clojure jobb i Norge!

🙌 1
1