Fork me on GitHub
#clojure-norway
<
2024-06-25
>
2food07:06:49

Mornings!

cjohansen07:06:53

@larstvei ramla over en bug i Powerpack som viste seg å stamme fra at to regex reader literals ikke er like hverandre, altså (= #"" #"") ;;=> false. Aldri tenkt over før, men det var skuffende greier, og forklaringene/rasjonaliseringene var ikke store trøsten: https://clojurians.slack.com/archives/C03S1KBA2/p1719296438962579

😢 3
cjohansen07:06:38

Snedig løsning! https://clojurians.slack.com/archives/C03S1KBA2/p1719301400147549?thread_ts=1719296438.962579&amp;cid=C03S1KBA2 Ikke farbart for et bibliotek, men noe man kanskje kan koste på seg i en appkodebase

augustl07:06:01

haha, moro! Får litt vibes av monkey patching i ruby

cjohansen07:06:05

Absolutt, sa akkurat det samme til Magnar. Dersom Powerpack gjorde dette hadde jeg vært igang med å bli statiske sites sin Rails 😂

hypirion09:06:11

Haskellerene gnir seg sikkert godt i hendene nå altså, der man får en kompileringsfeil og aldri ville truffet på dette problemet 😈

cjohansen09:06:57

Jeg har hørt at Haskell-kode heller ikke kompilerer når programmereren har misforstått oppgaven

augustl09:06:37

man må bare alltid ha en mere senior programmerer som har fått inn business-regler i typesystemet

slipset07:06:02

Jeg skjønner jo på et sett argumentasjonen. #"[a]" og #"a" vil jo matche samme string, og er da for en definisjon av lik, like.

larstvei11:06:41

Dette er to ulike regulære uttrykk som gir opphav til det samme regulære språket. Det virker helt OK å definere likhet over uttrykkene, snarere enn språkene de uttrykker.

💯 1
slipset07:06:29

Men det er ubestemmelig å vite at disse er like.

larstvei11:06:21

Ganske sikker på at dette ikke stemmer! Jeg så noen andre skrive det i en av trådene som diskuterte dette. Regulære uttrykk konverteres som regel til tilstandsmaskiner. Tilstandsmaskiner kan konstrueres på en måte som lar dem minimeres, og den minimale tilstandsmaskinen er unik (opp til navngivning av tilstandene). Altså uttrykker to regulære uttrykk det samme regulære språket hvis og bare hvis de gir opphav til den samme minimerte tilstandsmaskinen! https://en.wikipedia.org/wiki/Thompson%27s_construction

larstvei11:06:02

Å minimere tilstandsmaskinen er NP-hardt da, så det er nok ikke en god idé å sette i gang den prosessen der for en likhetssjekk 😅

slipset07:06:13

Men man kan jo være litt mindre comp-sci og si at to regex’er er like dersom deres mønster er like, slik som i @christian767’s eksempel.

cjohansen07:06:50

Det du nevner var det som ble sagt i issuen, men det føler jeg er en unødvendig feature creep. Det er nyttig å vite at to dataliteraler er like, uten å kunne si noe om hele settet av regexer som matcher den samme strengen.

👍 1
slipset07:06:36

Jeg tror jeg er enig med deg i det.

cjohansen07:06:15

Dagens bloggpost graver i en av de mulige grunnene til at vi er så få her på Clojure-slacken. I 1984 beskrev Eliyahu Goldratt https://en.wikipedia.org/wiki/Theory_of_constraints i den skjønnlitterære boken https://archive.org/details/goalprocessofo00gold (som forøvrig er direkte inspirasjon til The Phoenix Project). Boken ble en braksuksess og er fortsatt en bestselger på Amazon. Selskapene som har implementert lærdommen fra boken har nærmest uten unntak hatt tilsvarende suksess som Goldratt beskrev. “Alle” var enige om at The Goal beskriver en bedre måte å drive en fabrikk på, men allikevel fant Goldratt 20 år senere at kun 2% av verdens fabrikker hadde implementert idéene hans. Resten gjorde ting på den gamle måten, som så grundig blir plukket fra hverandre i boka. Hvordan kan det ha seg, og hva sier det oss om “best practice”? Det har jeg skrevet litt om: https://parenteser.mattilsynet.io/best-practice/

👀 2
👍 2
infosophy08:06:26

Takk for inspirerende morgenlesning! I forlengelse av temaet du trekker fram vil jeg også anbefale lydboken 'https://www.goodreads.com/book/show/172800.Beyond_the_Goal' av doktor Goldratt. Innsiktsfullt i foredragsformat, og peker bl.a. på et relatert problem til det du peker på: 'Best practice' utdateres. Og når vi gjør (teknologiske) forbedringer og forandringer som fjerner begrensninger og hindringer, forandres reglene for hva vi kan gjøre og hvordan. Men alt for ofte lar vi være å fjerne de gamle praksisene som fantes for å håndtere de gamle hindringene (som vi nå har fjernet), og vi får i beste fall begrenset gevinst av de nye praksisene vi har innført.

👌 1
👀 1
🙏 1
cjohansen08:06:04

Helt nydelig, innlegget er i aller høyeste grad inspirert av Beyond the Goal 😄

🙌 1
teodorlu08:06:23

Hahaha, Gene Kim har latt seg inspirere av "Beyond The Goal" også 😄 https://www.goodreads.com/book/show/38714647-beyond-the-phoenix-project?ref=rae_6

cjohansen08:06:15

Hørte det i etterordet til Phoenix Project som jeg leste på nytt forrige uke 😄

cjohansen08:06:23

Noen som har sjekka den ut?

infosophy08:06:50

Jupp. Jeg likte den veldig godt. Peker egentlig mer mot The DevOps Handbook enn Phoenix Project, IMO. Men den er veldig forskjellig fra Beyond The Goal i innhold og funksjon. Som jeg leste (altså; hørte) den, er BTPP en refleksjon over research og skriving av de to bøkene på den ene siden, og tanker omkring hva man har sett og lært siden på den andre. BTG er slik jeg forsto det opptak av en forelesningsserie Goldratt leste inn for å spre tenkningen som ligger bak ToC og de logiske tankeprosessene.

infosophy08:06:30

Ikke til forkleinelse for noen av dem, iofs.

teodorlu08:06:46

> Noen som har sjekka den ut? > Jeg har ikke lest den selv (ennå)

slipset08:06:22

Dan North som ikke heter bare fet lenger, ga en talk for noen år siden om Beyond The Goal. https://youtu.be/hZFShSjAhlQ?feature=shared Videre har vi «de fire spørsmålene» https://medium.com/benjamin-mosior/the-four-questions-15f93a16e41, og essensen i Beyond the Goal er at vi som regel glemmer å stille oss 3 & 4

👍 3
slipset08:06:05

For oss litt eldre utviklere, som husker en verden før CruiseControl/Jenkins/Whatnot, tenk på de fire spørsmålene i forbindelse med innførselen av teknologien «CI»

slipset08:06:55

Og, en annen øvelse vil være å tenke på de fire spørsmålene i forbindelse med innførselen av eksempelvis AWS.

slipset09:06:43

Hvis vi bare flytter eksisterende on-prem infra ut i skyen, men ikke endrer måten vi jobber på ut fra de fordelene som skyen gir, da har vi ikke svart på spørsmål tre og fire, og vi mister de store fordelene av å flytte til skyen.

💯 3
cjohansen09:06:28

> Dan North som ikke heter bare fet lenger Error: Failed to parse. Plz explain.

slipset09:06:30

Sorry. Dan North heter nå noe mer enn Dan North, jeg bare husker ikke hva…

cjohansen09:06:38

aha, sånn ja 😄

cjohansen09:06:46

Ja, han tok navnet til kona når han gifta seg tror jeg

cjohansen09:06:08

Jeg fryktet at Dan North hadde blitt canceled 😅

slipset09:06:42

Nei, hvis han blir kansellert, er det mye som er rart.

slipset09:06:27

Føler egentlig at vi burde hatt denne diskusjonen på LinkedIn :) Mye større rom for thoughtleadership der :)

😂 1
cjohansen09:06:32

Enig, jeg har posta på linkedin også, bare å gå dit å gjenta svarene!

slipset09:06:50

Sliiiiiiitsomt!

cjohansen09:06:54

Veldig interessant at så mange her inne har lest disse tingene.

cjohansen09:06:11

Jeg har nylig stilt spørsmålet i et par andre settinger og fått svært få hender i været 🙂

cjohansen09:06:29

@slipset opp til deg, du er kanskje ikke så investert i at Clojure-miljøet skal være senter for interessante faglige diskusjoner på LinkedIn? trollface

slipset09:06:07

Sånn! Da har jeg kopiert og startet thoughtleadership på LinkedIn

👌 1
cjohansen09:06:22

Da beklager jeg trollinga mi 😄

slipset09:06:52

Husker forøvrig ikke når jeg leste The Goal for første gang, men den har vært veldig viktig for meg.

cjohansen09:06:38

Jeg leste den for første gang for en måned siden og ble feid av banen. For en fantastisk bok. Hoppa rett videre på Beyond the Goal, og ble inspirert til å lese Phoenix Project på nytt. Holder nå på med andre runde av Unicorn project 😄

Zeniten09:06:31

Hvordan hørte dere først om The Goal, da?

slipset09:06:49

Hvis man forstår utilization va throughput, begynner å se etter flaskehalser og skjønner at det ikke er noe poeng i å optimalisere oppstrøms for flaskehalsen, ja da har man jaggu skjønt en del.

slipset09:06:42

@U9CU2PQPM fra min favorittkollega ever Henning Spjelkavik.

👌 1
cjohansen09:06:41

The Goal nevnes mange ganger gjennom The Phoenix Project. Inspirasjonen er ikke forsøkt gjemt 😊

👌 1
slipset09:06:00

Forøvrig går veien fort videre til køteori og sånt. Verdens mest søvndyssende foreleser, Don Reinertsen har noen kule talks rundt dette og annet fra Yow 2015.

slipset09:06:31

Basically så sier vel Reinertsen at dersom du har 100% utilisasjon, så har du ingen mulighet til å takle uforutsette hendelser.

slipset09:06:25

Det blir litt mye skirveleifer her. Skylder på ferie og Apple.

😊 1
infosophy10:06:47

Jeg liker også bildet med at en vei som har 100% utnyttelse effektivt har gjennomsnittshastighet 0.

😄 2
boosja11:06:42

Dette var spennende! Jeg begynte på the Goal for en uke siden 😄

🤌 2
🙌 1
teodorlu13:06:04

Jeg tror industrien vår hadde blitt bedre om vi hadde tatt Goldratt og Theory of Constraints seriøst. Jeg har tidligere tenkt mye på å "lage god kode" som "å lage en god teori for problemet som skal løses, og deretter holde koden konsistent med teorien". (se Naur, 1985, https://pages.cs.wisc.edu/~remzi/Naur.pdf) Men Goldratt jobber med et annet problem enn Naur. Naur snakker om hva koden er, Goldratt snakker om prosessen rundt koden over tid. Eller man kan bruke TOC direkte på produkter. Hvem bruker produktet, og til hva. Først da kan man si noe om throughput. Ta med hele fabrikken, og produktene som shoppet heøt ut til kunder, ikke stopp halvveis. Eller ta med endringer i produktet helt ut til at du ser at nye brukere faktisk bruker det som har blitt laget. Operational expense er ganske rett fram - det er fint om det er lite herk å gjøre endringer. Inventory er mer spennende. På fabrikken blir det fullt på gulvet hvis det ligger for mye greier rundt. Når folk er involvert, blir dette mye viktigere. Jeg har kapasitet til å gjøre 1 eller 2 ting selv. Helst 1 - men å ha en liten ting på siden kan noen ganger være fint. Dette er kanskje den viktigste verdien jeg ser med parprogrammering og mob-programmering. Det gjør at flere kan jobbe effektivt på samme ting, så kan man ha mindre work in progress / inventory i teamet som helhet.

teodorlu13:06:19

> “Alle” var enige om at The Goal beskriver en bedre måte å drive en fabrikk på, men allikevel fant Goldratt 20 år senere at kun 2% av verdens fabrikker hadde implementert idéene hans. Resten gjorde ting på den gamle måten, som så grundig blir plukket fra hverandre i boka. Hvordan kan det ha seg, og hva sier det oss om “best practice”? > Jeg har tenkt litt på ordet "kunnskapsdifferensial". Hva forskjellen på det folk vet/tror er. Finnes igjen både innad i team (noen kan et subsystem, noen kan en teknikk) og i industrien (forskjellig praksis, forskjellig teori). Det vil nødvendigvis være forskjeller på hva folk kan. Det er også ønskelig! Vi vil jo at folk lærer nye ting. Målet er kompetanse, ikke konformitet. Så er spørsmålet hvordan vi tar folk fra ferske til effektive. "vanligste praksis" kan være et steg 1, men jeg håper ikke det blir sluttmålet. Det hadde vært litt synd om man skulle ende opp der. "nå har jeg lært den vanligste måten å gjøre ting på, nå er jeg ferdig". Jeg hadde blitt drittlei hvis det var jobben min!

cjohansen13:06:04

Gode refleksjoner @teodorlu 👍

cjohansen13:06:26

Jeg tror vi i IT-bransjen har overstadige mengder av "local optimizations", som det gjøres et stort poeng ut av i The Goal. Og det er bekymringsverdig at mange beveger seg mer i den retningen med stadig mer spesialiserte oppdelinger (hallo, frontend/backend-teams). Det er helt mulig å gjøre en jobb med flere "work centers", men det stiller særlige krav til at noen tenker på flyten gjennom hele systemet, og det tror jeg ofte er mangelvare.

👍 1
cjohansen13:06:14

Et poeng Goldratt selv toucher på i Beyond the Goal er at mange unngår å bruke teoriene hans selv etter å ha lært om dem, fordi det går imot folks inuisjon. Dette fenomenet kjenner jeg fra andre arenaer også. Det er feks gjort mye forskning på hvordan man best lærer mekaniske øvelser (sport/idrett, musikkinstrumenter, osv), og der ser man også at de mest effektive metodene er kontraintuitive. Og selv etter å ha lært om dem og erfart effekten selv har folk lett for å falle tilbake på det som føles trygt og godt (men som er beviselig mindre effektivt).

👍 1
slipset07:06:34

På min maskin ser det ut som C er riktig svar

🙈 1
magnars07:06:22

Haha, @christian767 har startet eksperimentet, og du vant, @slipset

cjohansen07:06:45

Magnar sa til meg at B var riktig svar 😂

magnars07:06:53

😂 Og Christian var helt enig.

😂 1
teodorlu08:06:19

Gøy å høre om Goldratt! Jeg leste den selv etter at @genekim hadde skrytt av den i The Phoenix Project. Synes "maksimer throughput mens du minimerer inventory og operational expense" funker bra for oss som driver med programmering.

1
infosophy08:06:25

Critical Chain var nok den jeg opplevde som mest relevant før Beyond The Goal. Men tankene supply chain-hensyn og underleverandør-håndtering var også ganske mindblowing. Plutselig ga mye tankestoff fra TPS (Toyota Production System) mer mening.

👍 2
teodorlu08:06:56

Hva vil du anbefale at man leser? Hvis jeg starter på Beyond The Goal, er det vits i å lese Critical Chain?

cjohansen08:06:50

Har du lest The Goal @teodorlu?

infosophy08:06:01

I høyeste grad. Beyond The Goal er i mine ører en foredragsrekke som gir deg justering av perspektiv; den får deg til å tenke og reflektere riktigere, og hvis jeg husker riktig gir den en forståelse for hvordan man bør bruke de logiske tankeprosessene og tilpasse dem konkrete kontekster. The Goal lærer deg byggestenene i ToC og frister deg med at de logiske tankeprosessene finnes, mens Critical Chain viser deg hvordan ToC kan appliseres på prosjektarbeid.

👍 2
infosophy08:06:42

Jeg ville lest BTG sist. Da får du nok mest utbytte. Men kanhende er det bare fordi det var det jeg selv gjorde. Hvis du velger å gjøre noe annet, er jeg veldig interessert i å høre hva du tror og tenker.

1
teodorlu08:06:20

> Har du lest the goal? > Jepp :) likte den veldig godt. Fikk meg til å lese et par andre Goldratt-bøker også, men har ikke lest Beyond The Goal eller Critical Chain.

infosophy08:06:39

Critical Chain er en forretningsroman, akkurat som The Goal.

infosophy08:06:17

Og en som er lite skånsom i sin kritikk av MBA-studier, om jeg husker riktig.

teodorlu08:06:42

> Jeg ville lest BTG sist. Da får du nok mest utbytte. Men kanhende er det bare fordi det var det jeg selv gjorde. > Sist som i "etter både The Goal og Critical Chain"?

🎯 1
👌 1
cjohansen08:06:52

Goldratt slår meg ikke som en særlig skånsom type 😅

😄 3
🎯 1
cjohansen08:06:18

Han snakker selv mye om "Necessary but not sufficient", men den var ikke å finne på Audible. Mange av bøkene hans er gratis på Audible (hvis du har abonnement).

👍 1
leifericf18:06:12

"Waltzing With Bears" av Tom DeMarco er også en god forretningsroman jeg kan anbefale. Han har skrevet mye annet bra for øvrig. Tenker på "Peopleware" og "Slack."

leifericf18:06:15

"The Secrets of Consulting" av Gerald M. Weinberg og "Intuition Pumps and Other Tools for Thinking" av Daniel C. Dennett er også fantastiske og morsomme i tillegg. Anbefales.

😍 1
infosophy18:06:13

"Necessary but not sufficient" finnes i Kindle-versjon (i tillegg til FDT).

👀 1
teodorlu11:06:31

Dette er dritgøy! Fant ut at jeg faktisk har vært gjennom Critical Chain en gang, jeg bare husket det ikke. Den traff ikke like godt for meg som The Goal. Tror det har med erfaring å gjøre. Jeg har jobbet i byggeprosjekter som har fungert bra, og jeg har ikke sett feilene han beskriver tydelig der. The Goal var mer "hjernevrengende" for meg - utrolig godt utgangspunkt for å forstå kontinuerlige prosesser som skal løse et problem. Jeg fant noe i kapittel 6 i Beyond The Goal som jeg tror jeg er litt uenig i, men det går jeg heller ta tak i senere. Har egentlig startet ferie, og prøver å lage litt plass til å tenke på andre ting enn programmering og clojure.

😅 1
cjohansen12:06:21

Beyond the Goal er fra tidlig 2000, så ikke helt sjokkerende om ikke alt har tålt tidens tann like godt 🙂

cjohansen12:06:01

Spent på hva det var da. Jeg har nylig vært igjennom og steila ikke veldig. Men det er ikke til å skyve under en stol at når det blir mye så går det litt i bølger hvor godt alt synker inn. Kanskje jeg steiler på andre forsøk 😄

teodorlu12:06:38

Altså - "jeg har bittelitt i pirke i i kapittel seks" er ganske bra for bøker for min del, vanligvis er jeg mer uenig enn det 😅

😅 2
teodorlu13:06:28

@christian767 @magnars setter stor pris på at dere skriver og skriver og deler og deler! Synes det blir mye god diskusjon av det, #C061XGG1W ville vært fattigere uten.

💯 3
❤️ 3
🙏 1
1
teodorlu13:06:21

Jeg føler det hjelper på diskusjonen å spisse ting litt, ha et tema.

💯 1
cjohansen13:06:01

Takk for det @teodorlu! Litt spissing må til for å fremprovosere litt diskusjon 😊

❤️ 1
teodorlu13:06:48

Jeg vil si det så sterkt som at dere tar insj for å bygge teori. Ved å (A) peke på noe viktig, og (B) etablere litt felles vokabular blir det lettere å henge seg på.

😊 1
slipset14:06:04

En ting som ofte glemmes i statisk/dynamisk typing er at med dynamisk typing kan man prøve ut ting litt lokalt selvom ikke hele programmet kompilerer. Man kan liksom skisse litt?

augustl15:06:29

jaaaaaaaaa hnnng får fnatt av å ikke kunne skru av typesjekking selektivt (kan gjerne føre til at CI-bygget feiler, trenger det kun lokalt)

augustl15:06:10

særlig noen refactorings som liksom er lettere med typer men noen ganger vil man leke litt før man designer ferdige typer

bdbrodie06:06:19

Han er mye smartere enn meg! 🤓

pez07:06:02

Han virker utvilsomt sjeldent intelligent, men det gjør du også. 😄 For meg er likheten i måten å tenke på problemer. Å gå til bunns og ta utgangspunkt i første prinsipper. Og å ikke nøle med å få skikkelig skitt under neglene. Herlig inspirerende!

bdbrodie07:06:38

I dag skal vi få litt skitt under neglene faktisk, demodag på Opal 🎉

❤️ 1
🎉 2
pez07:06:19

@teodorlu på tal om Jupyter kernels. Professorn har gjort en för sin CL-implementation. Han beskriver i videon hur han har replen igång i Emacs (SLIME) och kan uppdatera fundamenten för sin notebook medan den körs. Antar det liknar ett arbetsflöde med Clerk.

teodorlu07:06:26

Kult! Jeg får ta en titt på videoen :)

pez07:06:21

❤️ Jag följer Opal på kartan dagligen, @b.brodie. Den är långt norrut just nu. 69.606° N 17.719° E 😃

🚢 1