This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2024-06-28
Channels
- # announcements (1)
- # beginners (128)
- # calva (15)
- # cider (1)
- # clerk (4)
- # clj-kondo (10)
- # clojure-berlin (5)
- # clojure-denmark (2)
- # clojure-europe (59)
- # clojure-nl (2)
- # clojure-norway (83)
- # clojure-sweden (3)
- # clojure-uk (4)
- # cursive (11)
- # datomic (8)
- # emacs (13)
- # events (1)
- # hyperfiddle (3)
- # juxt (2)
- # malli (13)
- # nrepl (10)
- # off-topic (46)
- # releases (2)
- # reveal (1)
- # rewrite-clj (6)
- # sci (6)
- # scittle (17)
- # shadow-cljs (2)
- # xtdb (2)
- # yamlscript (8)
Dette ser spennende ut for oss på JVM-en: https://youtu.be/teXijm79vno?si=wlMiusBt2-eMBX0W
for de late blant oss: > In the “Project Leyden: Capturing Lightning in a Bottle” YouTube video by PER MINBORG, the speaker discusses various ongoing projects within the Java Community aimed at improving Java application startup time, reducing memory footprint, and optimizing performance. These projects include Liliput, which reduces object headers, Lom with lightweight threads, Project Panama for native function calls, and Project Leyden itself, focusing on Java application startup time. The speaker also explores the dynamic nature of Java, the concept of shifting computation, and techniques for improving performance through delaying computation and using stable values. He discusses the use of condensers, which preserve and represent the results of applying them, and the benefits of using Spring’s optimization techniques. (Via https://www.summarize.tech/www.youtube.com/watch?v=teXijm79vno)
For de skikkelig late av oss som ikke orker å lese alle design-notatene til OpenJDK (oppsummert av ChatGPT): Project Leyden aims to address Java's long-standing issues with slow startup times, slow time to peak performance, and large memory footprints. Here’s a summary of the key changes planned for the Java compiler and JVM as detailed in the four design notes: 1. Project Leyden: Beginnings: ◦ The primary goal is to improve startup time, performance, and footprint by introducing static run-time images. These images are standalone programs derived from an application and the JDK, forming a "closed world" where no new classes can be loaded or created dynamically at runtime. Initially, a spectrum of constraints weaker than the closed-world constraint will be explored to enable incremental optimizations applicable to a broader range of existing code (https://openjdk.org/projects/leyden/notes/01-beginnings). 2. Selectively Shifting and Constraining Computation: ◦ This note discusses moving certain computations from runtime to earlier phases such as compile time, archive-generation time, or link time. It introduces weaker constraints (e.g., classes that cannot be redefined) to allow these shifts. These shifts can optimize performance by pre-loading and resolving classes, thus reducing startup times and improving execution efficiency. Additionally, it suggests expanding the number of phases in which these optimizations can be applied (https://openjdk.org/projects/leyden/notes/02-shift-and-constrain). 3. Toward Condensers: ◦ This concept introduces "condensers," which are tools that transform code artifacts by performing some computations earlier in the build process. Condensers work by querying a data model of the application, performing transformations, and applying updates to produce optimized code artifacts. This process is designed to be scrutable (easy to understand), composable (able to be chained together), and selectable (developers can choose which condensers to apply) (https://openjdk.org/projects/leyden/notes/03-toward-condensers). 4. Condensing Indy Bootstraps: ◦ The focus here is on improving the performance of invokedynamic (indy) call sites by condensing their bootstrap methods. By precomputing and storing the results of bootstrap methods at build time, the runtime overhead can be significantly reduced. This process involves transforming the bytecode to replace indy call sites with direct method invocations where possible, leveraging precomputed data for faster execution (https://openjdk.org/projects/leyden/notes/03-toward-condensers). These planned changes reflect a methodical approach to enhancing Java's performance, maintaining backward compatibility, and leveraging existing JDK components. The project aims to balance the introduction of constraints with practical optimizations to benefit a wide range of Java applications.
Jeg tror at Clojure ikke får noe utbytte av Static Images, altså denne delen som snakkes om i Beginnings hvor man da ikke har dynamisk genererte klasser. Tror ikke det er kompatibelt med hvordan Clojure interpreteren gjør ting, men kan kanskje fungere med AOT?
https://slack.engineering/balancing-old-tricks-with-new-feats-ai-powered-conversion-from-enzyme-to-react-testing-library-at-slack/ gleder meg til å høre @christian767’s take aways fra denne :)
In the world of frontend development, one thing remains certain: change is the only constant. New frameworks emerge, and libraries can become obsolete without warning."I did not know that. I still don't know that"
ah, har ikke sett Simple Made Easy på en stund, på tide med et gjensyn. Her med timestamp til Christian sin referanse: https://www.youtube.com/watch?v=SxdOUGdseq4&t=850s
Så, gitt at de ikke hadde lagt ut på denne AI reisen (som de ikke har spesifisert noe timebruk på), så estimerte de 10000 timer på å skrive om testene, fordi de skulle fra R17 til R18. Jeg antar at dette kanskje ikke var den eneste kostnaden. Et spørsmål må jo da bli, hva var oppsiden? For den bør jo være ganske stor…
den artikkelen heller bensin på bålet mitt om nytteverdien av å teste GUI-komponenter på den måten
Har ikke rukket å lese dette, men dersom det å oppgradere én majorversjon er estimert til 10k timer så er jeg rett og slett tom for ord. Da ville jeg starta med å sparke samtlige som har vært involvert i å bygge faenskapet.
“vi drar inn en dependency for å teste mot noe internals i React, vi, det er lurt” 😬
Det var bare å skrive om testene som var estimert til 10k timer. Artikkelen sier ingenting om resten.
At de i det hele tatt tør å skrive dette offentlig sier litt om hvor ute å kjøre de er
Dette er jo en kjempewin! Et problem har oppstått, de har kunnet applisere AI for å løse det. Finnes det noe mer fremoverlent og sexy enn det?
Det er som å skrive en bloggpost om hvordan man kan få inn mer søppel i dette huset. Med AI!

liker også at de byttet fra enzyme (et uoffisielt teste-bibliotek som jobber med internals i React) til React Testing Library (et uoffisielt teste-bibliotek som jobber med internals i React)
fwiw er ihvertfall React Testing Library basert på å teste på DOM-output, og ikke intern state og oppsett av React-komponenter, så det er vel et steg i riktig retning sånn sett
Det er helt irrelevant i hvilken retning du tar stegene dine når du er så hinsides langt ute på viddene
Dette er det slutten på historien som starter med utsagnet "la oss bruke React til routing"
om ikke annet er det ganske grei konsensus på HN om at dette var rævva, eller i det minste snodig https://news.ycombinator.com/item?id=40726648
har også 1 som tallet på “antall prosjekter jeg har fjernet React Router fra” 💪 Fikk det også til uten AI, tro det eller ei
> > saving considerable developer time of at least 22% of 10,000 hours > I wonder how much time or money it would take to just update Enzyme to support react 18? (fork, or, god forbid, by supporting development of the actual project). > Nah, let’s play with LLMs instead, and retask all the frontend teams in the company to rewriting unit tests to a new framework we won’t support either. > I guess when you’re swimming in pools of money there’s no need to do reasonable things.
For noe forbanna ræl. Jeg prøvde å lese artikkelen, men blir så provosert av problemstillingen at jeg ikke orker å høre detaljer om hvordan de gikk frem for å løse det. Snakk om å angripe feil problem.
Neste gang noen forteller meg at de vil bruke JavaScript heller enn Clojure(Script) fordi det er fint med tilgang til så mange "gratis" open source-biblioteker skal jeg sende dem denne artikkelen.
Snakk om å angripe feil problem.> Mer seriøst spørsmål - hvis man er i denne situasjonen, hva gjør man egentlig? Metodisk fjerne ting etter ting? (ref begynne å ta ut søpla)
Godt spørsmål, det er en helt håpløs situasjon som nesten ikke fortjener et seriøst svar. At ingen har reagert før de har problemet i det absurde omfanget de har nå er i mine øyne seriøst graverende nok til at jeg ville vurdert å fjerna en hel haug med folk.
Men forslaget fra hackernews som @U04V5VAUN fant er vel eneste fornuftige vei fremover
det kan umulig ta i nærheten av 10k timer å ta over vedlikeholdet av det testrammeverket
Alternativ: innfør en shim/proxy for rammeverket, og bytt ut alle kall. Nå har du ett sentralt sted der du kan bytte ut rammeverket.
Men du sitter fortsatt på 10k tester som tester UI-et ditt ca like mye som de tester random implementasjonsdetaljer i React. Det problemet kommer de aldri til å få løst.
Litt synd når løsningen er å si opp folk - men ja, vanskelig å si at dette ikke er et problem med teamet.
Shim gir mening ja. Man må vel tenke at ting kommer til å være "halvveis dritt" i det rommet en stund før det faktisk blir bra.
At de har valgt å skrive testene sine på denne måten sier meg en god del om arkitekturen på den underliggende koden.
(Noe fordomsfullt selvfølgelig, men jeg setter en femtilapp på at jeg ikke bommer helt 😅 )
https://clojurians.slack.com/archives/C061XGG1W/p1719563963992459?thread_ts=1719561094.731999&cid=C061XGG1W Når jeg leser denne blir jeg sittende og tenke at det handler om kompetanse og selvtillit Hvis man tenker at man ikke kunne skrevet et bibliotek for testing, og ikke tør starte, blir ikke status quo bedre. Men ... jeg kjenner også at jeg kanskje ikke ville ønsket å bruke et bibliotek som disse menneskene har laget.
Jeg la først nå merke til at dette er et team hos Slack som har publisert - de som lager appen som jeg sitter og bruker akkurat nå 🙈
Jeg synes også det er vondt å tenke på at en glorifisert irc-klone trenger 15K unit-tester
Huff, jeg klarer ikke stoppe. Ser dere det fancy, ai-genererte bildet? Legger dere merke til noe? Overgangen fra trad-engineering (venstre) til ai-engineering (høyre) er ren sminking. • Kranene er blå • De er selvlysende • Og de er av en eller annen grunn tykkere. Så... Kranene er dyrere å produsere, og bruker mer strøm. MEN alle folka er borte, da. Så er moralen, fjern folka som tenker, aksepter at det fører til dyrere, dårligere produkter, men mal det med selvlysende blå maling, og erkær det som en suksess?

> denys_potapov 8 days ago | prev | next [–] > > It's a 2024 webdev summary, nothing can be added: > > New React version made the lib obsolete, we used LLM to fix it (1/5 success rate)
behovet for å render-teste GUI-kode kommer vel ene og alene fra dårlig (eller mangel på) datamodell, som ikke kan testes for seg selv? Med en god (og logikk-tykk) datamodell er behovet ganske lavt for å teste selve render-koden
Jepp, dette er en av flere ting som gjør at jeg mener dette er katastrofalt inkompetent
og selv når man har state over alt og gjør “vanlig” React er det bare litt tankekraft som skal til for å skrive state-logikken som isolert kode man kan unit-teste
jeg vil nesten si at det er et rødt flagg for kodebasen om du ikke tør å prodsette kode uten render-tester
Jøss. Til tross for hvor mye de fikler og kåler hos Slack, så har produktet deres blitt svært utbredt og de tjener voldsomt mye penger. Det er interessant at selskaper som gjør dårlige tekniske valg allikevel kan gjøre det så godt forretningsmessig.
En kan spørre seg om gode teknologivalg egentlig er avgjørende for forretingssuksess. Kanskje det ikke spiller noen rolle hvor dårlig ting er implementert på så lenge ideen og brukeropplevelsen er god.
Dog kunne de antagelig tjent mye mer penger (kastet bort mye mindre penger) hvis tingene var implementert på en god måte.
Så man kan lage gode produkter på en dårlig måte, og dårlige produkter på en god måte. Den store forskjellen ligger i kostnaden for utvikling, vedlikehold, og drift. Hvor stor regninga blir og hvor lang tid det tar. Noen har mer penger å sløse enn andre.
Jeg har tenkt litt at god tech og gode produkter koster fokus. Og du har begrenset mengde total fokus. Jeg velger å tro at det beste er å få til begge i parallell, god tech og gode produkter. Men i praksis har jeg ofte observert det motsatte: at team som jobber med svært hyppige iterasjoner på brukeropplevelsen gjerne gjør kompromisser på koden, eller at team som har svært god kontroll på koden blir defensive når man har lyst til å eksperimentere med produktet. For Slack sin del tenker jeg: • de har et produkt som selger som hakka møkk, de har buffer nok til å gjøre veldig mye feil. • så lenge “eksisterende arkitektur” ikke opptar med enn 50 % av teamene sin kapasitet, kan de nok fremdeles få til å lage nye ting. Jeg vil si at personene det går mest utover at man har dårlig teknologifundament er utviklerene som jobber der; de lærer den måten å gjøre det på som den eneste måten som finnes. Som er synd.
Å holde kvaliteten oppe på koden når mange folk er innom er et par hakk vanskeligere enn når 1-3 personer jobber på koden, etter min erfaring.
Jeg tenker at teknologien er god når den tillater så få mennesker som mulig å lage relativt sofistikerte og lukerative produkter og tjenester på en god måte og innenfor en noenlunde fornuftig tidsramme. Alle steder jeg har jobbet har forretningssiden stresset med "Time to Market." Det skulle helst vært lansert i går. I de fleste tilfeller ville jeg foretrukket å velge ideer hvor dette med "Time to Market" ikke er så viktlig, slik at man kan ha færre folk og bruke mer tid.
Det er en av tingene @christian767 og @U07FCNURX har vist meg: Hvor mye en kan gjøre med få (dyktige) folk på laget. Man trenger ikke flere titalls eller hundrevis av utviklere i de fleste tilfeller hvis man gjør gode teknologivalg. Store teams kompliserer ting unødvendig.
Store team kompliserer utvilsomt. Dette med time to market brukes ofte som en unnskyldning, men jeg tror ikke det er en god forklaring. Jeg tror forklaringen heller ligger i dårlige bransjestandarder (altså lista for hva som er akseptabelt å drive med ligger altfor lavt), for mange uerfarne folk, og for lite godt teknologisk lederskap. Jeg vil tro at time to market-grafen til Slack ser rimelig dyster ut etter mange år med det kjøret de har holdt på med. Til slutt når sånn kode et metningspunkt der du bare ikke får til å stappe inn mer funksjonalitet uten å rase hele tårnet.
Min drøm er å sitte i ett rom med en håndfull personer og kunne snu seg rundt og prate med hverandre ved behov. Face-to-face. Ikke noe e-post. Ikke noe Slack. Ikke noe Teams. Bare virkeligheten.
Handler om NATS på siste Developer Voices! https://open.spotify.com/episode/3WH4225tjRcUf8a5LfRHAK?si=tjty3nRLTzaGRNO5zgEC-g&t=360 https://youtu.be/5NXvU17a-iU?si=f3HjGtHSuNdSEYO6
Neste gang noen forteller meg at de vil bruke JavaScript heller enn Clojure(Script) fordi det er fint med tilgang til så mange "gratis" open source-biblioteker skal jeg sende dem denne artikkelen.
Jeg la først nå merke til at dette er et team hos Slack som har publisert - de som lager appen som jeg sitter og bruker akkurat nå 🙈
Apropos ellers gode bøker med noen råtne idéer: I Unicorn Project omtales NPS i rosende ordlag 😂