This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-11-07
Channels
- # announcements (1)
- # babashka (34)
- # bangalore-clj (2)
- # biff (2)
- # cider (63)
- # clj-commons (1)
- # clj-kondo (4)
- # cljdoc (44)
- # clojure (65)
- # clojure-europe (45)
- # clojure-nl (4)
- # clojure-norway (85)
- # clojure-uk (5)
- # clojurescript (5)
- # cursive (11)
- # datomic (8)
- # graalvm (11)
- # honeysql (7)
- # hoplon (9)
- # hyperfiddle (3)
- # introduce-yourself (1)
- # matrix (2)
- # missionary (17)
- # overtone (2)
- # polylith (6)
- # portal (16)
- # re-frame (24)
- # releases (2)
- # sci (45)
- # xtdb (9)
God morgen! Dagens blogginnlegg er strengt ikke så Clojure-nært, men siden @larskristian.maron719 aktualiserte det så veldig i går kveld tillater jeg meg å reklamere litt 😅 https://parenteser.mattilsynet.io/fulltekstsok/
Tips: Hvis bildet er laget med Midjourney kan du hente ut seed og gjenbruke det til nye illustrasjoner for å gjenskape samme (eller… en noenlunde lik) karakter og stil til fremtidige illustrasjoner. Du finner seed ved å reagere med brev-emojien ( 📧) på posten med den oppskalerte varianten i Discord. Da kommer detaljert info i PM fra botten.
@U0PS4MS80 haha, det hadde jeg ikke lagt merke til en gang 😂
Bra tips @U01PE7630AC! Dette er dall-e via bing. Den traff på tonen til den første bananen helt av seg selv. Mulig den ikke har så stort spillerom 😄
Nice, meget god lesning som fjernet mye av mystikken rundt søkemotorer for meg. 🙏 I en eventuell oppfølging ville jeg vært interessert i å lese om hva mer som skiller etablerte søkemotorer som Elasticsearch fra en slik liten selvskrevet motor. Noen ting kan jeg tenke meg til, men det er kanskje noen flere bestanddeler som ikke er åpenbare for meg som du har kjennskap til.
Jeg skal se hvor langt jeg kommer med det jeg husker fra artikkelen, i første omgang. 😄
I dag kom det en liten oppfølger som tar for seg vekting: https://parenteser.mattilsynet.io/sok-vekting/
@U9MKYDN4Q Nice! Vet du forresten om konseptene "https://en.wikipedia.org/wiki/Stemming" og "https://en.wikipedia.org/wiki/Tf–idf" lingvistikk og tekstsøk? Det er en teknikk vi ofte brukte for å implementere søkerelaterte ting i ML-verdenen når jeg jobbet som data scientist. Kanskje det kan brukes i blogpost # 3 🙂
Det er ganske "klassiske" eller "oldschool" teknikker som kanskje ikke er like hotte mer nå som vi har LLM-er.
jeg skal ikke skryte på meg mer kjennskap til dette enn at jeg husker å ha lest dette når jeg ser på wikipedia-artikkelen 😄
Det var forresten ikke ment som kritikk på noen som helst måte. Jeg elsker når folk gjør ting fra first principles.
Jeg er langt fra noen ekspert på dette temaet. Jeg har snart tømt meg for det jeg har 😂
Og jeg forstår meg heller ikke på det teoretiske og matematiske bak disse konseptene så det er sagt. Jeg bare brukte Python libs uhemmet 😂
Jeg har i alle fall ikke undersolgt arbeidet dere gjør og bloggen deres internt her hos oss 😅
Det gikk sånn: "vi trenger noe pønt" - "hva med noen paranteser?" -"burde vært mattema" - bananer!
Jeg ser for meg at bananene etter hvert får mer og mer liv, og så introduseres kamerater, fiender og bekjentskaper av disse i form av pølser, agurker osv. 😄
Det blir "Delicious Parens" istedenfor "Rainbow Parens." "Delicious parentheses for hungry developers."
Morn morn! Ja, forklaring av bananene er å finne på forsiden av http://parenteser.mattilsynet.io 😅 Det er det mest Clojure-vennlige forvokste bæret i naturen.
Aha, er det derfor vi har namespacet hiccup2.core
?
Dette forvirret meg en del for et par uker siden, fordi alle eksemplene jeg fant brukte hiccup.core/html
, som ble flagget som deprecated i VS Code. Det tok meg litt tid å finne en funksjon med nøyaktig samme navn lå under hiccup2.core
. Først trodde jeg at jeg hadde en gammel versjon av selve Hiccup-pakken fra Maven.
idéelt sett unngår man jo å lage v2 og selvfølgelig, men hiccup ble jo laget for mange herrens år siden når Clojure var nytt så det er sikkert masser av gode grunner til en v2
Ja, og hiccup2
er veldig liten (35 linjer kode):
https://github.com/weavejester/hiccup/blob/master/src/hiccup2/core.clj
Det ser ut som at hovedhensikten bak hiccup2
har å gjøre med automatisk escaping av strings. Det kunne vel like greit vært hiccup.core/html2
(men det ville vært forvirrende, fordi det ser ut som versjon 2 av HTML) eller hiccup.core/html-escaped
. Kanskje det er derfor de gjorde det sånn de har gjort det.
til sammenlikning, hvor mange deprecations ender man opp med hvis man deprekerer i stedet for å fjerne?
(defn lookup-vars [namespaces ns-match? var-match?]
(->> namespaces
(filter ns-match?)
(mapcat ns-interns)
(map val)
(filter var-match?)
(sort-by symbol)))
(lookup-vars (all-ns)
#(str/starts-with? % "clojure")
(comp :deprecated meta))
;; =>
(#'clojure.core/add-classpath
#'clojure.core/agent-errors
#'clojure.core/clear-agent-errors
#'clojure.core/replicate
#'clojure.test/file-and-line
#'clojure.test/file-position)
6! (bare hvis man er Rich Hickey og har god tid)Dette er så fundamentalt for ham, at da han ble spurt "Hvis du skulle gjort Clojure på nytt nå, hva ville du gjort annerledes?" så klarte han ikke engang å svare på spørsmålet, for han syns det var et uinteressant premiss 😅
Rich Hickey minner meg om Richard Feynman noen ganger. Ikke på grunn av navnet, men fordi han ikke aksepterer spørsmål uhemmet og svarer på spørsmål med nye spørsmål som fremhever hvorfor det initielle spørsmålet var dårlig. https://www.youtube.com/watch?v=36GT2zI8lVA, hvor han river den stakkars journalisten et nytt høl for å stille "why"-spørsmål 😂
Jeg tror egentlig det Hickey og Feynman har til felles er at de er "from first principles"-tenkere. Sokrates, Bertrand Russell og Mark Twain hadde også lignende karakteristikker, selv om det var svært annerledes i uttrykksformene sine.
Når Feynman i den videon sier: > "I can't explain that attraction in terms of anything else that's familiar to you." Det kan generaliseres: > "I can't explain [X] by comparing it to concepts you're already familiar with." Det minner meg om Hickey sin presentasjon "Simple Made Easy." For å kunne bli forklart X må en forstå noe annet som ligner på X. Og noen ganger finnes det ikke noe annet som ligner på X. Slike ting, som ikke kan sammenlignes med noe annet, er svært vanskelig å forstå. Hickey er utrolig flink til å bruke analogier og sammenligninger til å forklare ting. Som Hickey var inne på i sin presentasjon: Hvor "lett" eller "vanskelig" det er å forstå noe, avhenger av hvor "langt unna" det er fra andre ting en allerede forstår. En god lærer/mentor starter med å danne seg en forståelse for hva eleven allerede forstår, og benytter elevens eksisterende kunnskap til å "bygge bro" til nye konsepter.
> det finnes konsepter jeg ikke klarer å forklare til deg her, nå, muntlig på ti minutter Jeg har funnet litt ro i akkurat det. Noen ganger jobber vi med vanskelige konsepter, de trenger tid. Vi kommer så langt som vi gjør på den tiden vi har!
> hvor han river den stakkars journalisten et nytt høl for å stille “why”-spørsmål Hvis man spør hvorfor, hvorfor, hvorfor tror jeg man lett ender opp med å forklare alt ut ifra defininsjoner, i stedet for eksempler. Ikke alle samtaler bør bunne ut i filosofi 😂
Aha, er det derfor vi har namespacet hiccup2.core
?
Dette forvirret meg en del for et par uker siden, fordi alle eksemplene jeg fant brukte hiccup.core/html
, som ble flagget som deprecated i VS Code. Det tok meg litt tid å finne en funksjon med nøyaktig samme navn lå under hiccup2.core
. Først trodde jeg at jeg hadde en gammel versjon av selve Hiccup-pakken fra Maven.
(partition 3 (interleave [1 2 3] [:a :b :c] ["foo" "bar" "baz" "maz"]))
eller
(map list [1 2 3] [:a :b :c] ["foo" "bar" "baz" "maz"])
for å iterere igjennom et knippe lister som “hører sammen”?
🍌 Begge to returnerer ((1 :a "foo") (2 :b "bar") (3 :c "baz"))
🍌
endte opp med map selv, men blir av ukjente årsaker litt emosjonelt forstyrret av å sende inn list
til map på den måten
Nå fikk jeg flashbacks til https://apidock.com/ruby/Array/zip ♦️ Jeg husker at jeg likte det navnet så godt den gang fordi det fikk meg til å tenke på elementene i hvert array som taggene på en glidelås og hvert array som den éne siden av glidelåsen, typ "flett disse sammen og ignorer overflødige tagger."
I dag kom det en liten oppfølger som tar for seg vekting: https://parenteser.mattilsynet.io/sok-vekting/