Fork me on GitHub
#clojure-norway
<
2023-10-26
>
leifericf07:10:20

Morn! Nå har jeg hørt på siste podkast med @christian767 og @magnars, og føler meg motivert til å gi Emacs et nytt forsøk.

🔥 2
magnars07:10:50

Moro! Kan anbefale deg å bare starte rett på https://github.com/magnars/emacsd-reboot hvis du vil ha en autentisk Emacs-opplevelse på Mac med norsk tastatur.

🙌 2
leifericf07:10:29

Går dette under kategorien blasfemi? 😂

🔥 1
magnars07:10:50

Det hender jeg bruker vi også, men kanskje ikke til .edn-filer 😅

😅 1
cjohansen07:10:55

jeg har faktisk aldri brukt vim 😮 Men det hender at jeg starter vi

cjohansen07:10:21

Men svært sjeldent etter at jeg slutta å ssh-e meg inn på navngitte servere 😅

emil0r07:10:02

vim för enklare server admin

slipset07:10:17

jeg tror også jeg kan si at jeg aldri har bedt om å få bruke vim, ber alltid om vi

cjohansen07:10:44

Ja, det var det jeg mente. Da må jeg moderere meg til at jeg ikke vet om jeg har brukt vim 😄

slipset07:10:23

Det var det som slo meg også, vi kunne for alt jeg vet vært en symlink til vim, men det er det tydeligvis ikke på min maskin.

slipset07:10:34

erik@keep ardoq-docker % type -a vim
vim is /usr/bin/vim
erik@keep ardoq-docker % type -a vi
vi is /usr/bin/vi
erik@keep ardoq-docker %

leifericf08:10:48

Ikke hos meg heller! TIL

leifericf08:10:51

Nå har jeg enda en bok å lese mellom slagene i pappapermen 😅

🥳 1
🎉 1
msolli08:10:18

Tipper vi-kommandoene deres er symlinker (eller hardlinker) til vim. Har ikke sett en ikke-vim vi in the wild på mange år. På min maskin (MacOS):

$ ls -l /usr/bin/vi
lrwxr-xr-x  1 root  wheel  3 Sep  2 09:35 /usr/bin/vi@ -> vim

😮 1
msolli08:10:05

type -a sier ingenting om symlinks, så vidt jeg kan forstå.

leifericf08:10:37

Jaggu har du rett, @U06BEJGKD!

leifericf08:10:26

Er det nå jeg skal symlinke vim til emacs for å tvinge meg over? 😂

slipset08:10:30

zOmg, jeg ble avkledd som unix noob.

slipset08:10:45

erik@keep ardoq-docker % ls -l /usr/bin/vi
lrwxr-xr-x  1 root  wheel  3 Sep 16 15:28 /usr/bin/vi -> vim
erik@keep ardoq-docker % cat /usr/bin/vim
#!/usr/bin/emacs -e evil-mode
erik@keep ardoq-docker %
Dæven!

😂 2
🔥 1
teodorlu08:10:43

sååååå … jeg leste denne tråden akkurat nå.

$ cat ~/.zsh_history | tail -n 30
: 1698241381:0;bbin
: 1698241523:0;javac -h
: 1698241528:0;java --help
: 1698241534:0;javac --help
: 1698241572:0;bb --help
: 1698241574:0;bb --help
: 1698310000:0;hometemp
: 1698310004:0;mkcd neilproj
: 1698310008:0;neil dep add org.clojure/clojure
: 1698310014:0;cat deps.edn
: 1698310060:0;neil dep add hiccup/hiccup
: 1698310064:0;cat deps.edn
: 1698310073:0;neil dep add -h
: 1698310078:0;neil dep upgrade -h
: 1698310093:0;vim deps.edn
: 1698310122:0;git init .
: 1698310128:0;git add . && git commit -m "LOL"
: 1698310131:0;it st
: 1698310132:0;git st
: 1698310134:0;cat dp3e
: 1698310136:0;cat deps.edn
: 1698310140:0;neil dep upgrade
: 1698310145:0;cat deps.edn
: 1698310162:0;git st
: 1698310295:0;bash
: 1698310311:0;,promptsimple
: 1698310322:0;cat ~/.zsh_history | grep -n 10
: 1698310329:0;cat ~/.zsh_history | tail -n 10
: 1698310338:0;cat ~/.zsh_history | tail -n 20
: 1698310343:0;cat ~/.zsh_history | tail -n 30
Blasfemi? 😄 (jeg bruker for øvrig vim-bindings inni emacsen min)

leifericf09:10:32

@magnars, jeg gjorde nettopp følgende: 1. Installerte siste versjon av Emacs via https://emacsformacosx.com 2. Forket ditt emacsd-reboot repo i GitHub 3. Installerte alt du nevner under "out of band dependencies" i README.md 4. Fjernet min eksisterende ~/.emacs.dmv .emacs.d .emacs.d-OLD 5. Klonet min fork til ~/Code/emacsd-reboot 6. Lagde denne symlink: ln -s ~/Code/emacsd-reboot/ ~/.emacs.d 7. Startet Emacs Etter en stund med nedlastninger, ser alt ut til å fungere! Kult. Det er noen warnings der, men jeg vet ikke om de er noe å bry seg om.

🔥 1
magnars09:10:57

Du trenger ikke bry deg om warnings - de er nok mest til de som har skrevet pakkene - men gjør obs på at @christian767 hadde dårlig erfaring med symlink. Den lastet ned avhengighetene hver gang Emacs startet eller noe i den duren.

👍 1
cjohansen09:10:44

Stemmer. Jeg droppa symlink

leifericf10:10:44

Aha! Kloner dere bare repo rett inn i home da, eller?

leifericf10:10:52

Og døper om mappa til .emands.d

teodorlu10:10:49

Det finnes også Emacs-verktøy for å bygge mellom emacs-configer. Feks: https://github.com/plexus/chemacs2 (fra Clojure-communityet sin egen @U07FP7QJ0). Uten at jeg vet hva Magnar og Christian har lagt opp til i sin config!

leifericf10:10:25

Jeg er fornøyd meg å kunne ta Magnar og Christian sitt oppsett for god fisk og bare bruke det rått frem til jeg har lært meg bedre hvordan ting funker og kan endre på ting selv 😅

leifericf10:10:29

Less work! 😛

leifericf10:10:05

Mitt hovedproblem var å lære Clojure og Emacs samtidig. Jeg ble frustrert over at min mangel på kunnskap om editoren kom i veien for Clojure-læringen. Bare noe så banalt som å åpne et "prosjekt" som en mappe, navigere rundt og starte REPL var treigt og rart sammenlignet med VS Code + Calva.

magnars10:10:35

ref det siste: • s-p p lar deg velge mellom prosjekter som du tidligere har åpnet i Emacs. Første gang må du navigere dit med C-x C-fs-p f lar deg finne filer i nåværende prosjekt • C-c M-j starter CIDER (`s-p` betyr "hold super og trykk p", hvor super er Emacs-navn på option-tasten på mac)

🔥 1
magnars10:10:02

anbefaler også på det aller varmeste å binde Caps Lock til Control

👍 1
1
magnars10:10:56

Da har du de viktigste modifier keys lett tilgjengelig: M rett ved space (command) og C på en svær og fin tast rett på home row

👍 1
leifericf10:10:18

Ligger de bindingene allerede i ditt repo, eller må jeg endre på noe for å binde Caps Lock til Control?

magnars10:10:33

Caps Lock til Control må gjøres i OS-et.

leifericf11:10:32

Ahaaa, sånn, ja! Jeg trodde du mente i Emacs.

leifericf21:03:59

Er det noen som vet årsaken til denne feilen når jeg starter Emacs? :thinking_face: Jeg finner ingen referanse/path til mappen "projectile" i fila init.el Jeg bruker en fork av @magnars sin config (uendret enn så lenge): https://github.com/leifericf/emacsd-reboot

teodorlu21:03:09

Feilmeldingen sier at projectile (https://github.com/bbatsov/projectile) mangler. Det ser ut som projectile er satt opp her: https://github.com/leifericf/emacsd-reboot/blob/main/packages/setup-projectile.el … men jeg klarer ikke se noe galt, så usikker på hva du kan gjøre for å fikse dette. Mulig jeg er på villspor. Magnar eller Christian kan sikkert hjelpe deg med denne!

👍 1
larstvei00:03:49

Problemet er at projectile blir required før det er blitt installert. Det er en bug som er lett å introdusere, siden det kun påvirker "bootstrappingen", og koden ble antageligvis lagt til på en maskin hvor projectile var installert! Legger ved en patch som bør la deg åpne ting uten kræsj 🙂

❤️ 1
💯 2
leifericf06:03:10

Nice, takk! Det skal jeg teste i kveld.

magnars07:03:12

Jeg har nå oppdatert repo'et med: 1. en fiks for denne feilen 2. lagt til tips og triks i README

🔥 2
❤️ 2
leifericf13:03:30

Det fungerte fint, ja! Jeg fikk testet det ut nå. > When you start using emacs for the first time, your habits fight you every inch of the way. Your fingers long for the good old familiar keybindings. Veldig sant! > This is my personal emacs configuration. I am constantly tuning it to my preferences. You should consider doing the same. Maybe start with a blank emacs + Technomancy's better-defaults package, and then dig through this repo for useful nuggets, instead of forking it directly. Godt poeng, og takk for tipset! Jeg gjorde et forsøk på det først, men sleit med å få ting til å funke. Det er vel bare en relativt stor terskel man må komme seg over i starten.

magnars13:03:16

Ja, hvis du skal skrive i hovedsak Clojure på et norsk tastatur, så endres anbefalingen min til å bare bruke min config, egentlig 😅

😅 1
emil0r13:03:02

US International Keyboard för programmering

leifericf13:03:50

@magnars Ja, det blir nok stort sett for Clojure og Fennel (og kanskje litt Lua hvis nødvendig).

emil0r13:03:19

Kom gärna med feedback på hur fennel är @U01PE7630AC 🙂

👍 1
emil0r13:03:29

Väldigt nyfiken på det för spelprogrammering

leifericf13:03:50

Er det forresten noen som har erfaring med å bruke IRC fra Emacs? Er det lurt? 😅

emil0r13:03:51

defold har ju lua som scriptspråk för all spellogik

leifericf13:03:21

Jepp! Lua er de facto standard i spillbransjen for å kontrollere C/C++ spillmotorer.

leifericf13:03:31

Vi bruker også Lua i Funcom til våre spill.

larstvei13:03:51

Jeg har bare såvidt prøvd (tror jeg er akkurat for ung for å ha hengt på IRC), men M-x erc er innebygget, og funker helt fint.

😮 1
💡 1
leifericf13:03:52

Denne spillmotoren er skrevet i C++ for Lua: https://love2d.org — Ganske cool!

leifericf13:03:28

Og TIC-80 er en annen retro spillmotor skrevet for Lua: https://tic80.com

leifericf13:03:45

Jeg var mye på IRC som tenåring, og har ikke tenkt på det på leeenge. Men det er der alle Fennel folka henger.

leifericf19:03:08

Et annet Emacs-relatert spørsmål: Nå holder jeg på å sette opp støtte for Fennel. Det gjøres slik (https://git.sr.ht/~technomancy/fennel-mode):

(autoload 'fennel-mode "/path/to/fennel-mode/fennel-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.fnl\\'" . fennel-mode))
Men! Hvor er det lurt å putte de linjene der? Hvis jeg tenker rett, og følger malen til @magnars, bør jeg lage en ny fil (f.eks. fennel.el) under settings mappa, og putte alt som har med Fennel (og kanskje Lua) å gjøre inn der.

magnars19:03:13

Hvis fennel-mode er satt skikkelig opp så skal du ikke trenge alt det staffasjet der.

(use-package fennel-mode)
Dette bør erstatte alt over. Ytterligere konfigurasjon kan kreves, da.

😮 1
magnars19:03:59

du kan evaluere det med C-x C-e , så vil den begynne å laste ned pakken.

magnars19:03:48

hvis du også legger det inn i setup-fennel.el i packages -mappa, så blir det lastet automatisk når du starter emacs.

💡 1
leifericf19:03:42

Takk for tipsene! Det skal jeg prøve ut.

leifericf08:10:37

En annen ting vi har til felles, @magnars (som jeg hørte om i podkasten): > In 2012, I read The Pragmatic Programmer by Dave Thomas and Andy Hunt. It inspired me to learn a new programming language each year, and I’ve kept at it since then except for a few years when there were too many other things occupying my mind. […] I eventually swayed to check out some talks because I love Lisp. Rich Hickey’s talks blew me away and convinced me to take the plunge. (https://clojureverse.org/t/introduce-yourself/1327/296?u=leif) Og https://clojureverse.org/t/introduce-yourself/1327/305?u=leif siden da.

😊 1
magnars08:10:55

Stoppet du også etter Clojure? 😅

leifericf08:10:08

Så langt, ja! Haha.

leifericf08:10:30

Eller… Jeg har blitt tvunget til å lære meg C# på nytt da 😅 Men bortsett fra det, ja.

leifericf08:10:54

For mitt vedkommende var det @U5E9UP66T som overbeviste meg over alt for mye champagne på en nyttårsfest til å velge Clojure for 2020.

🍾 2
magnars08:10:24

Godt innsalg!

💵 1
emil0r11:10:20

Rust var så pass annorlunda att jag satte mig ner och tittade på det efter 10+ år av inte vilja lära mig något nytt språk efter Clojure

teodorlu13:10:58

mitt giv etter å lære nye, kule programmeringsspråk dabbet også av etter jeg begynte å skjønne Clojure. Man slipper liksom å bytte ut Clojure for å få lære nye ideer — siden nye ideer ofte kan embeddes rett i språket (lite syntaks, vekt på data)

cjohansen11:10:33

Dagens nyhet innen statsfinansiert fri programvare 😊

❤️ 4
💯 2
msolli11:10:54

Takker og bukker! Bruker FontAwesome, men via @font-face. På tide å fikse det! SVG er jo mye bedre.

cjohansen11:10:03

SVG er sweet 😄

teodorlu12:10:42

hypotetisk. Hvis FontAwesome hadde lisens som tillatte det, ville du da laget biblioteket som en svær Clojure med

(def file-pdf [:svg ,,,])

;; ... og alle de andre ikonene ...
? Eller hadde du fremdeles gått for å ha SVG-filer ett sted og laste mer dynamisk med Clojure?

cjohansen12:10:36

Trenger ikke å svare hypotetisk. Dersom det var open source hadde jeg droppa steget der du selv må laste ned ikonet: https://github.com/cjohansen/phosphor-clj

👍 1
cjohansen12:10:33

Men nei, ikke en stor clojure, jeg vil kunne snakke om ikoner som data (keyword vs funksjonskall), og jeg vil ha effektiv tree-shaking i cljs

👍 1
cjohansen12:10:44

Det kan man kanskje få med funksjoner også forsåvidt

👍 1
teodorlu12:10:46

Skjønner, takk! Jeg liker navnerom med def-er. Lite herk. Men det gjør en antagelse om at man alltid vil snakke om hele verdien, ikke kun navnet. For øvrig - kul bruk av nøkkelord med navnerom!

👍 1
leifericf14:10:36

La meg gjette: Dette ble laget i hovedsak for "smilefjestilsyn" 😊

cjohansen14:10:34

Nei, det har vi faktisk ikke kommet igang med enda 😅 Men godt forslag!

teodorlu13:10:57

Jeg vil være med å spikke flis jeg óg! Liker du alternativ 1 eller alternativ 2 best? Kontekst: • Disse lever i navnerommet minapp.steel.i-profile, som beskriver geometriske egenskaper for tverrsnitt av stålbjelker • Jeg gjør select-keys fordi map-et man starter med inneholder parametre (som kan skaleres med *), men også inneholder andre ting, som blir direkte feil hvis de tas med.

cjohansen13:10:39

Hva med alternativ 3:

(defn scale [profile factor]
  (-> (select-keys profile geometry-parameters)
      (update-vals * factor)))

💯 1
cjohansen13:10:29

update-vals, update og update-in gjør alle effektivt -> med verdien sin

👀 1
magnars13:10:17

Ref https://www.kodemaker.no/blogg/2019-10-clojure-update/ 😅 hashtaggdeteralltidenbloggpost

😄 2
teodorlu13:10:33

sikker på at dette funker for update-vals?

user> (def ipe300 {:r 15, :wy 557, :s 7.1, :prefix "IPE", :wz 80.5, :h 300, :b 150, :iz 6.04, :t 10.7, :iy 83.6, :profile 300, :a 5.38})
;; => #'user/ipe300
user> (update-vals ipe300 :r * 2)
Execution error (ArityException) at user/eval41937 (REPL:30).
Wrong number of args (4) passed to: clojure.core/update-vals
user> (doc update-vals)
-------------------------
clojure.core/update-vals
([m f])
  m f => {k (f v) ...}

  Given a map m and a function f of 1-argument, returns a new map where the keys of m
  are mapped to result of applying f to the corresponding values of m.
;; => nil
Såvidt jeg kan se av docstring, har ikke update-vals en variadisk variant?

magnars13:10:27

i allan dar, for et skuffende api!

😄 1
teodorlu14:10:25

jeg skjønner ikke helt argumentet til Alex Miller i ask.clojure.org-spørsmålet.

magnars15:10:19

Det gikk relativt raskt å logge inn med Github og gi saken en stemme.

teodorlu15:10:49

La inn en stemme jeg òg.

👌 1
teodorlu09:10:52

Jeg går videre med

(defn scale
  "Shrink or expand a profile with a factor"
  [profile factor]
  (-> (select-keys profile geometry-parameters)
      (update-vals (partial * factor))))
. Samme signatur, navn og parametre som cjohansens alternativ 3, men partial for å få koden til å funke. Det jeg likte med (scale-by profile * factor) var at * var eksplisitt. Men den gir et bredere grensesnitt enn (scale profile factor), og jeg har ingen argumenter for at det skal skaleres med noe annet enn *. (jeg skal bruke dette til å lage pene SVG-er som har riktig stroke width på streken med små / store figurer. Fant ut at jeg kunne skalere domeneobjektene mine, og la “lag SVG”-funksjonen være). Takk for innspill! 💯 🙌

👍 1
leifericf20:10:02

Denne videoen var ganske morsom 😂 https://www.youtube.com/watch?v=SGBuBSXdtLY Se noen kodere prøve å lese en jumbo Clojure-funksjon… uten å kunne Clojure fra før av.

leifericf21:03:59

Er det noen som vet årsaken til denne feilen når jeg starter Emacs? :thinking_face: Jeg finner ingen referanse/path til mappen "projectile" i fila init.el Jeg bruker en fork av @magnars sin config (uendret enn så lenge): https://github.com/leifericf/emacsd-reboot

leifericf19:03:08

Et annet Emacs-relatert spørsmål: Nå holder jeg på å sette opp støtte for Fennel. Det gjøres slik (https://git.sr.ht/~technomancy/fennel-mode):

(autoload 'fennel-mode "/path/to/fennel-mode/fennel-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.fnl\\'" . fennel-mode))
Men! Hvor er det lurt å putte de linjene der? Hvis jeg tenker rett, og følger malen til @magnars, bør jeg lage en ny fil (f.eks. fennel.el) under settings mappa, og putte alt som har med Fennel (og kanskje Lua) å gjøre inn der.