Fork me on GitHub
#clojure-norway
<
2023-10-25
>
magnars06:10:12

(str/join [\m \o \r \n])

clojure-spin 2
msolli06:10:13

(str
  (reify Object
    (toString [_] "Morn!")))
😬

đŸ”„ 3
😄 1
😂 3
teodorlu06:10:20

((constantly 'morn))

emil0r07:10:59

Hur tĂ€nker folk kring skĂ€rmar? Har en 32" med 60hz och tittar pĂ„ att eventuellt uppgradera. Är lite av en djungel dĂ€rute med mĂ„nga val

emil0r07:10:04

FrÀmst för programmering

cjohansen07:10:54

Jeg har en LG Ultrafine 5k, ekstremt fornĂžyd med den. Tror den er 28". Mer enn stort nok for meg.

emil0r07:10:00

Full res eller krymper du upplösningen?

cjohansen07:10:11

Krymper den litt

cjohansen07:10:22

Full res blir veldig smĂ„tt 😅

cjohansen07:10:40

Font-rendering er helt magisk bra pÄ den

emil0r07:10:50

Kan tĂ€nka mig det 😂

Ivar Refsdal07:10:45

Har nokon brukt/testa e-ink skjerm? For bruk til programmering?

leifericf08:10:10

Nei, men jeg har vĂŠrt nysgjerrig pĂ„ Ă„ teste ut https://shop.boox.com/collections/all/products/mira en stund! Den er bare litt for dyr 😅

Ivar Refsdal08:10:39

Stive prisar ja 🙂 Men ser lekkert ut

👍 1
augustl08:10:28

god morgen :star-struck:

leifericf08:10:18

Jeg liker ganske godt disse ThinkVision skjermene. De funker godt med macOS og docken med kun én kabel til Mac-en. Jeg bruker begge skjermene som to skjermer. Den store delt vertikalt, og den "lille" delt horisontalt. Skjermen pÄ hÞykant er fin til monitorering av tjenester i Kubernetes, terminaler, diffing av lange kodefiler, etc.

hanDerPeder13:10:50

Kjent syn her pĂ„ kontoret 😄

đŸ§‘â€đŸ’» 3
leifericf09:10:55

Dagens utfordring: PrĂžve Ă„ forstĂ„ hva som foregĂ„r https://github.com/RutledgePaulV/kube-api/blob/master/kube-api-core/src/kube_api/core/kubeconfig.clj og https://github.com/RutledgePaulV/kube-api/blob/master/kube-api-core/src/kube_api/core/auth.clj, og trekke ut kun de bitene jeg trenger 😅 inject-client-auth i auth.clj var da en voldsom multimethod! Noen av de lengste Clojure funksjonene jeg har sett sĂ„ langt.

leifericf09:10:28

Kanskje det er enklere Ă„ lese https://kubernetes.io/docs/concepts/configuration/ og implementere det selv fra scratch enn Ă„ forstĂ„ det der 😅

hanDerPeder13:10:16

ser det spikkes litt flis her for tiden, og det vil jeg vÊre med pÄ! hvilken av disse foretrekker dere? vi antar at get-recent-crossings og add-vessel-name-to-crossing er gode navn pÄ funksjoner

;; 1
(defn get-recent-crossings [vessel-names mmsis]
  (if (sequential? mmsis)
    (add-vessel-name-to-crossing vessel-names mmsis)
    (add-vessel-name-to-crossing vessel-names [mmsis])))

;; 2
(defn get-recent-crossings [vessel-names mmsis]
  (add-vessel-name-to-crossing
   vessel-names
   (if (sequential? mmsis) mmsis [mmsis])))

;; 3
(defn get-recent-crossings [vessel-names mmsis]
  (let [mmsis (if (sequential? mmsis) mmsis [mmsis])]
    (add-vessel-name-to-crossing vessel-names mmsis)))

;; 4
(defn get-recent-crossings [vessel-names mmsis]
  (let [mmsis (cond-> mmsis (sequential? mmsis) vector)]
    (add-vessel-name-to-crossing vessel-names mmsis)))

;; 5
(defn get-recent-crossings [vessel-names mmsis]
  (add-vessel-name-to-crossing
   vessel-names
   (cond-> mmsis
     (sequential? mmsis)
     vector)))

đŸ”Ș 2
đŸȘ” 2
magnars13:10:14

MĂ„ vi ogsĂ„ anta at det er gode grunner til Ă„ sende inn bĂ„de en liste og ett element til samme funksjon? 😅 I sĂ„ fall syns jeg 1 var lettest Ă„ lese, og 2 gjentok seg minst, sĂ„ en av dem.

cjohansen13:10:19

Jeg foretrekker 5, men er som @U07FCNURX mildt skeptisk til konseptet 😅

Zeniten13:10:41

Morsomt, jeg foretrakk 3 eller 4. :}

magnars13:10:24

Grunnen til at jeg ikke foretrekker nr 5 er fordi jeg aldri klarer huske forskjellen pÄ vec og vector

leifericf13:10:21

Jeg lurte fÞrst pÄ hva "mmsis" betyr. "Maritime Mobile Service Identities!" Takk, Google! Alternativ 1 synes jeg ogsÄ var lettest Ä lese. Alternativ 5 hadde jeg formatert slik:

(defn get-recent-crossings [vessel-names mmsis]
  (add-vessel-name-to-crossing vessel-names (cond-> mmsis
                                              (sequential? mmsis)
                                              vector)))

Zeniten13:10:49

Jeg tenker litt DRY nÄr jeg ser 1. Jeg tror jeg synes det er rotete med forgrening inni funksjonskall, sÄ nei til 2. Jeg foretrekker nok 3 over 4, da jeg er mer komfortabel med syntaksen der. 5 virker rotete for meg.

cjohansen13:10:06

@U07FCNURX Poeng! Jeg svarte 5 pÄ generelt grunnlag, for jeg liker cond-> til ish sÄnne ting. Men enig i at vec/vector er kjip.

cjohansen13:10:24

Er enig i at 1 er et godt alternativ - rett frem og lett Ă„ lese

teodorlu13:10:43

Jeg blir sittende og lure litt pÄ hvilket navnerom disse funksjonene lever i. Og om koden kan gjÞres mer lesbar hvis man tar med navnerommet. Da kunne man kanskje kommet unna med kortere funksjonsnavn, feks vessel-location-info/recent-crossings. (jeg svarer ikke helt pÄ det du spurte pÄ!)

2food13:10:18

(defn get-recent-crossings [vessel-names mmsis]
  (->> (if (sequential? mmsis) mmsis [mmsis])
       (add-vessel-name-to-crossing vessel-names)))
Lanserer en 6. kandidat!

2food13:10:49

Nesten lik 3, bare med threading istedenfor let

anders13:10:08

Jeg liker alternativ 0; hÄndtere denne differansen lengre ute i kalltreet

🎯 2
hanDerPeder13:10:50

selv om du gÄr for alternativ 0 mÄ du vel pÄ ett eller annet tidspunkt sjekke om du har en sequential eller ikke pÄ en eller annen mÄte? :thinking_face:

hanDerPeder13:10:46

spÞrsmÄlets opprinnelse var at jeg under code review sÄ 1 og tenkte at jeg ikke likte dupliseringen. sÄ tenkte Ä foreslÄ 2, men da jeg sÄ den fÞltes 1 bedre. tror jeg vanligvis gjÞr 3.

cjohansen13:10:09

Å innfĂžre en let her, som atpĂ„til overskriver navnet pĂ„ parameteret, sorterer aller lengst ned pĂ„ min liste over foretrukne lĂžsning.

hanDerPeder13:10:33

snakker vi brent barn skyr ilden? eller koriander þdelegger mat? 😄

😁 3
anders15:10:03

@U013U475882 poenget mitt var at hvor enn du sitter med én mmsi og skal kalle pÄ en funksjon som tar en sekvens av mmsiér, sÄ hÄndterer du differansen der og inliner det med [mmsi]

anders15:10:31

Dette ble vel allerede er pÄpekt av et par andre lengre oppi trÄden. Jeg er ikke sÄ begeistret av funksjoner som har parametre som bÄde kan vÊre en sekvens og enkelt-elementer av en ting

anders15:10:01

Har forstĂ„else for at du anser dette som en liten avsporing av det opprinnelige spĂžrsmĂ„let altsĂ„ 😊

hanDerPeder15:10:51

Avsporinger er name of the game 😁 ser Ăžnsket om Ă„ hĂ„ndtere dette pĂ„ kallstedet.

Zeniten13:10:30

Inspirert av det rett over, jeg mener Ä huske at bruken av let er blitt diskutert tidligere. Synes dere at man bÞr forsÞke Ä unngÄ bruken av let? Har dere noen for og imot?

2food13:10:04

En Ă„penbar case hvor let er bra er hvis du skal bruke noe flere ganger. Typ:

(defn do-stuff! [thing]
  (let [new-thing (add-stuff thing)]
    (do-a! new-thing)
    (do-b! new-thing)))
heller enn:
(defn do-stuff! [thing]
  (do-a! (add-stuff thing))
  (do-b! (add-stuff thing)))

👍 1
teodorlu14:10:11

Jeg skrev ganske nylig denne funksjonen:

(defn oggpow-link [{:keys [opts]}]
  (let [pages-by-slug (->> (oggpow/pages)
                           (filter :uuid)
                           (map (juxt :slug identity))
                           (into {}))
        choice (fzf (keys pages-by-slug))
        unicad-discovery-host ""
        host (cond (:local opts) ""
                   (:global opts) unicad-discovery-host
                   :else "")]
    (when-let [uuid (some-> choice pages-by-slug :uuid)]
      (println (str host "/by-uuid/" uuid "/")))))
SÊrlig fornÞyd med bruken av some->. Jeg har sett eksempler pÄ bruk av some-> fra cjohansen her i kanalen, men har egentlig ikke brukt some-> og some->> skikkelig fÞr. Hadde jeg skrevet eksempelet for noen mÄneder siden, hadde jeg kanskje brukt mer let og if i midten istedetfor. Edit: det er ganske mye let i koden over fremdeles, det er kanskje mulig Ä fÄ til mindre let.

magnars14:10:19

1. Det er vanskelig Ä gi gode navn. UnngÄ let der det er unÞdvendig. 2. Det er lett Ä ende opp med Ä skrive lange let-statements som ligner overraskende mye pÄ imperativ programmering. Disse er sjelden idiomatisk Clojure.

💯 2
👍 2
2food14:10:43

Jeg tror at let kan vĂŠre bra, selv om det ikke er strengt nĂždvendig, hvis det gjĂžr koden mer lesbar. Men jeg tror og at nĂ„r man kommer fra imperative sprĂ„k er det lett Ă„ let-e alt for mye 😄

➕ 2
👍 1
Zeniten14:10:00

Jeg synes koden er smukk, teodorlu. 😄

❀ 1
cjohansen14:10:01

Jeg behandler let som et nĂždvendig onde, en siste utvei

cjohansen14:10:50

I tillegg til grunnene @U07FCNURX oppgir: let innfÞrer nye navn og gÄr pÄ bekostning av Ä kunne lese koden lineÊrt

☝ 1
👍 1
Zeniten14:10:31

Med "lineĂŠrt", tenker du da pĂ„ at koden blir mer skeiv? 😄 Vi foretrekker mer veritkal kode over mindre vertikal kode?

cjohansen14:10:30

Jeg mener at jeg kan lese en funksjon fra topp til bunn i én pass, uten Ä mÄtte hoppe frem og tilbake for Ä sjekke hva ting er

Zeniten14:10:49

SkjĂžnner.

vijaykiran15:10:56

We grabbed the two Norwegian Clojurians who missed my (allegedly) auspicious visit to Norway and forced them to do an episode with us https://soundcloud.com/defn-771544745/92-defnno-with-magnar-sveen-and-christian-johansen

👂 2
1
📝 1
2
🎉 4
teodorlu16:10:26

I somehow expected that Magnar had used Emacs since the 90s. Not sure why! 😂

slipset06:10:53

Yah, a bit surprised there to here that Christian is the OG emacs user of the two.

cjohansen06:10:05

Only in a strict chronological sense!

teodorlu06:10:06

Personally, I'm really glad you spent effort trying to reach "the poor Norwegians who are into clojure"! :hugging_face:

2
teodorlu07:10:30

I'll use the chance to say thank you for expand-region.el :the_horns: It's been a stable part of my Emacs config for a long time bound to M-Ăž, and I use it every day. Thank you!

Zeniten21:10:14

Er det denne "scope capture" du snakker om, @U07FCNURX? https://github.com/vvvvalvalval/scope-capture

👍 1
magnars04:10:10

Ja, bortsett fra at jeg har byttet til org.clojars.abhinav/snitch 😅

Zeniten10:10:22

Aha. 🙂