clojure-norway

kolstae 2026-04-07T06:27:49.036219Z

Morn!

boosja 2026-04-07T06:30:05.514209Z

Morn!

msolli 2026-04-07T06:39:39.738899Z

Morn!

eaj 2026-04-07T06:47:02.270309Z

God morgen!

2026-04-07T06:57:27.138249Z

mårn

slipset 2026-04-07T07:15:57.388339Z

Mrn

teodorlu 2026-04-07T07:20:17.379429Z

goood morn!

mokr 2026-04-07T07:21:21.651809Z

Morn!

teodorlu 2026-04-07T07:24:42.742249Z

jeg fikk lagt litt jobb i SSE/Datastar-eksperimentene mine i påsken, og har nå en rigg for å gjøre push av både HTML og assets fra backenden. Effekten er noe som ser ut som live-reload i nettleseren, uten at det er live reload; det er bare push av tilstand fra serveren over i klienten. Når serveren får ny tilsstand, pusher den ny HTML til tilkoblede klienter. Men lenkede ressurser (CSS og HTML) er bare tilstand de også! Så, med en liten hash i URL-en til assets (lenkede ressurser), kan samme push-maskineri laste ny CSS under lokal utvikling.

(->hiccup (by-id :assets.css/style))
;; => [:link
;;     {:rel "stylesheet",
;;      :href "/css/style.css?sha1=CcSm4H9hTldETb9qlHGlNo1bZgE",
;;      :id ":assets.css/style"}]
Jeg må gå via file-watcher og push gjennom systemet mitt; og merker tydelig at push direkte fra REPL er kjappere enn file watch -> asset hashing -> push. Så kanskje jeg bare bør bruke tidspunktet filen ble endret i stedet for sjekksum av innholdet. Det tar ca 4 ms for meg å hashe 32k bytes, men mulig jeg gjør noe dumt her også.
;; Hashing datastar with SHA-1 takes 4 ms. SHA256 takes 7 ms.
  (time (sha1-str (get-in @state/!asset-data ["js/datastar.js" :body])))
  (fs/size "js/datastar.js")
  ;; => 32408
  ;; Datastar is 32k.
  ;; Assets are hashed on app startup, then not again. Asset hashes prevent
  ;; serving of stale assets.

🚀 3
teodorlu 2026-04-11T09:46:05.583769Z

Jeg fikk akkurat en 3000 % speedup av hashingen! • før ◦ les 32 kb: 0.4 ms ◦ hash 32 kb: 4 ms (thinking-face) • etter ◦ les 32 kb: 0.4 ms ◦ hash 32 kb: 0.15 ms ved … å fikse reflection warnings! 😄 🤡 Ser bedre ut nå — laste bytes fra disk skal ta mer tid enn å tråle gjennom bytes i minnet og lage en sjekksum ☺️ Det var noe som skurret her. ooog det er sikkert mange flere steder jeg skulle satt:

(set! *warn-on-reflection* true)
At man plutselig bruker 30x lenger tid enn man burde er litt kjipt.

🚅 1
teodorlu 2026-04-11T09:47:47.105679Z

det kunne sikkert blitt enda bedre ved å lese chunk for chunk fra disk og hashe etter hvert som de kom inn i minnet — la CPU og disk jobbe samtidig, men det gidder jeg ikke! Ikke merkbart så lenge dingsen min har én ekte bruker (meg selv) 😂

gunnar 2026-04-13T08:49:04.729039Z

Dette var noe jeg fikk erfare første gang jeg benyttet clojure til noe Advent of code-greier. Tok votter og vinter, mens det gikk på et blunk med standard imperativ java-kode. Så da oppdaget jeg type-hints 🙂

🎉 1
teodorlu 2026-04-07T07:24:50.793669Z

Håper dere hadde fine påsker!

gunnar 2026-04-07T09:14:30.530629Z

Interessant å høre om Datastar-eksperimenter! Har lyst å prøve det ut selv. Jeg har fått tid til å lytte til lydboken https://en.wikipedia.org/wiki/The_Goal_%28novel%29 i påsken. Takk for tips, @christian767, det var en veldig bra bok (dog kjærlighetshistorien føltes veldig datert og konstruert ut)

🙌 2
🎉 1
cjohansen 2026-04-07T09:33:53.580809Z

Haha, nei kjærlighetshistorien er ikke høydepunktet 😅

eaj 2026-04-07T11:14:33.941759Z

Men soundtracket!

2026-04-07T16:12:31.653049Z

Nydelig bok, minus åttitallet som skinner gjennom på kjærlighetsfronten, ja.

gunnar 2026-04-08T07:11:51.461609Z

For de som ikke kjenner til boka (The Goal), så handler den (grovt sett) om hvordan man forbedrer flyt og kapasitet i produksjon, ved identifisering flaskehalser og rigge flyten deretter. Istedenfor å optimalisere prosesser som ikke er flaskehalser, så ser man på hvordan forsinkelser og opphopninger i flyten påvirker bunnlinja. (Boken fokuserer også på metoder for undervisning, og legger frem hele stoffet i en fortelling, og bruker aktivt den https://ndla.no/r/religion-og-etikk/kva-eksisterer/9608d9f914/19156 for å engasjere både hovedpersonen og leseren i problemløsningen.) Har tenkt litt på hvordan dette er overførbart i min egen hverdag, og jeg har ihvertfall ett åpenbart eksempel: Jeg har jobbet flere plasser hvor vi har benyttet pullrequest-basert flyt, og hvor det var stor variasjon i både størrelse og kvalitet på det som blir bedt om review på. Jeg blir en flaskehals som må bruke mye tid på review pga lav kvalitet og stor størrelse, og hvor produsentene av PRene løper videre og produserer nye PRer (opptil flere) før de foregående har blitt merget. Disse utviklerne er da tilsynelatende effektiv, men sørger egentlig bare for dårlig throughput totalt sett. En åpenbar løsning (nå som jeg har lest boken), er å begrense antall oppgaver en utvikler kan jobbe på. Det vil være bedre om utvikleren må tvinne tomler inntil PRen er merget, istedenfor å fortsette å produserere nye ting. En mulig positiv bi-effekt av lediggangen kan være at tiden brukes til egen-review (og forbedring).

👍 1
💯 2
🎯 1
❤️ 2
slipset 2026-04-08T11:50:46.341479Z

Dette er spot on! unreviewed PRs er WIP. Hvis vi får en haug av WIP, må vi bruke tid på andre steder. Eksempelvis skrive PR’er som er lettere å reviewe. Eller parprogrammere, Eller hjelpe til med review. Samme om man har et QA steg. La utviklerne skrive happy path tester i playwright, så er det mindre jobb for QA folka (ja noen har sånne fortsatt)

cjohansen 2026-04-08T12:07:54.530109Z

Jeg vil dra det lenger: PR er WIP

💯 1
gunnar 2026-04-08T13:20:02.986739Z

> Eksempelvis skrive PR’er som er lettere å reviewe. Helt enig. Og det krever innsats: en god beskrivelse (tar man seg bryet med å gjøre dette, kanskje man finner ut nye ting om endringene, kanskje man finner ut at hele greia må tilbake til tegnebrettet, etc), og et lite og fokusert sett endringer.

eaj 2026-04-08T14:13:49.393909Z

Det er fremdeles helt koko for meg at den mest utbredte arbeidsmetodikken i bransjen virker å være at alle jobber i full isolasjon for så å kaste arbeidet over veggen til noen som ikke har konteksten til å forstå endringene, og som dessuten har fullt opp med egne oppgaver.

💯 1