clojure-norway

leifericf 2026-04-06T20:10:00.062739Z

Hoisann! God kveld, godtfolk. Som flere av dere kanskje vet, har jeg kunstutdanning og har jobbet med datagrafikk ganske lenge. Har hatt en idé i bakhodet i en del år (skrev litt om det https://clojurians.slack.com/archives/C061XGG1W/p1711310559788699?thread_ts=1711285368.074639&cid=C061XGG1W). I dag satte jeg meg og laget en slags prototype inspirert av Replicant. https://github.com/leifericf/eido 🙂

👏 2
🎉 6
2026-04-06T20:16:47.866919Z

ah, det der har jeg også gått og tenkt på i sikkert 10 år

2026-04-06T20:17:57.270069Z

langt der nede i UI-stacken et sted rendres hele skjermbildet fra bunnen av, hver eneste frame. Det har alltid slått meg som noe som må låne seg noe så innmari bra til persistente datastrukturer og immutability. Plutselig trenger man ikke låse tråden som oppdaterer GUI-dataene fordi man driver og rendrer, du kan double buffre så mye du bare orker, osv osv

2026-04-06T20:18:41.770989Z

hoppe over hele den gigantiske state machinen som er opengl osv

1
gunnar 2026-04-06T20:19:22.654389Z

Utrolig kult, @leif.eric.fredheim!

🙇‍♂️ 1
2026-04-06T20:19:59.723049Z

2013 😄 https://www.augustl.com/blog/2013/truly_concurrent_user_interfaces/

👍 1
👀 1
msolli 2026-04-06T20:31:00.609299Z

Veldig gøy! Imponert over kvaliteten på dokumentasjonen, så mange eksempler! 💪

🙇‍♂️ 1
2026-04-06T20:40:24.569559Z

håper noen lager et spill på en engine som fungerer som Eido, tror ikke det har vært gjort? Må jo bare være en eller annen fet tradeoff man kan få ut fra det!

👍 1
leifericf 2026-04-06T21:01:52.111779Z

Jeg har forresten brukt mye tid på https://github.com/leifericf/claude-code-toolkit, https://github.com/leifericf/noumenon og https://github.com/leifericf/eido/blob/main/CLAUDE.md. Alle de verktøyene brukte jeg for å lage Eido. Det er den eneste måten en stakkars småbarnsfar med "gode" idéer og i beste fall middelmådige kodeferdigheter kan få ting gjort på 😅 Nå som jeg har blitt ansvarlig for alt som har med AI å gjøre på jobben, på godt og vondt, har jeg fått bruke mye tid på det de siste månedene. Hele Eido var laget på to dager (men jeg har tenkt på det lenge). Også rappet jeg jo noen gode idéer fra @christian767 🫣 (Én render-funksjon)

boosja 2026-04-07T05:46:10.996119Z

Kult! 🤩 Jeg har hatt liknende ide og jobba litt med det for mange måneder siden. Ville ha én render-funksjon som tok imot en hiccup-liknende-struktur. Kom dog ikke like langt som dette.

👍 1
pez 2026-05-04T05:51:29.481419Z

Wow. Några planer på ClojureScript/browser? Quil funkar, men det drar in tunga dependencies.

leifericf 2026-04-09T08:13:19.451019Z

Eido har nå ganske sofistikert støtte for datadrevet 3D-modellering, materialer, lys og teksturer og en sterkere synergi mellom 2D- og 3D-mekanismene. Se endringsloggen for https://github.com/leifericf/eido/blob/main/CHANGES.md#v100-alpha9--3d-sculpting-pipeline--2d3d-bridge for mer info 🙂 Jeg måtte også gjøre noen store grunnleggende interne endringer i arkitekturen for å realisere 3D-tingene på en effektiv måte. Endringsloggen for https://github.com/leifericf/eido/blob/main/CHANGES.md#v100-alpha8--semantic-ir--procedural-fills viser mer om det. Disse endringene var interne og endret ikke på API-et.

🥳 3
leifericf 2026-04-09T09:00:32.256719Z

Men API-et ser nå helt jævelig ut 😅 Må gjøre en stor opprydning der nå.

leifericf 2026-04-09T09:02:58.934839Z

Jeg er veldig imponert over hvor bra JVM + Java2D er! Nå har jeg snart bygget en fullverdig 3D-motor-greie på den. Vil aldri funke for "real-time," men helt alright for "offline." Får en del tyn av grafikk-koderne på jobben da 😂

leifericf 2026-04-09T09:08:14.589749Z

Low-level C++ kodere er ikke imponert over Clojure for å si det mildt.

gunnar 2026-04-09T09:08:46.583849Z

Haha! JVMen er ordentlig bra på mange måter. Og ikke glem at en allokering av et word i java faktisk er raskere enn med c++ (jada, jada, java jukser selvfølelig siden det er preallokert 😄)

leifericf 2026-04-09T09:09:31.658449Z

> ikke glem at en allokering av et word i java faktisk er raskere enn med c++ Takk, @gar! Jeg skal passe på å nevne det i lunsjen for å trolle litt.

gunnar 2026-04-09T09:09:36.780699Z

hihi

2026-04-09T10:43:29.077959Z

er det samme API notch brukte i sin tid? Og fortsatt kanskje?

leifericf 2026-04-09T11:32:27.089719Z

Minecraft duden?

Sardtok 2026-04-09T12:56:22.834229Z

Han brukte LWJGL

👍 1
Sardtok 2026-04-09T12:56:46.303819Z

Lightweight Java Game Library, som er et sett med wrappere for OpenGL og diverse andre C-biblioteker.

Sardtok 2026-04-09T12:57:29.194399Z

Da må du bruke Java NIO for å dytte buffere med floats til OpenGL-funksjoner eller liknende. Er noen år siden jeg har brukt det, men det fungerer ganske greit.

leifericf 2026-04-09T13:21:34.837859Z

Hvis jeg går i retning av "ekte 3D greier med GPU" så blir det enten Vulkan, WebGPU, eller Skia. Mest sannsynlig er WebGPU "best fit." Men jeg vil prøve å holde Eido i 100% ren Clojure og se hvor langt og hardt det går å døtte Java2D.

leifericf 2026-04-09T13:22:58.304349Z

Jeg har allerede lagt opp til at det skal være relativt enkelt å "kompilere" til ulike shader-språk i fremtiden for å koble opp flere "backends."

Sardtok 2026-04-09T13:26:49.609639Z

LWJGL har bindings for Vulkan, men ikke for WebGPU. Det er kun for FFI i JVMen. Det betyr jo også at det er veldig lavnivå.

👍 1
leifericf 2026-04-09T22:14:30.109639Z

Jeg fikk en del DM-er fra folk som spurte om design og arkitektur, så jeg laget en ny side om det: https://eido.leifericf.com/architecture/ Brukerguiden har også fått en refresh: https://eido.leifericf.com/guide/

leifericf 2026-04-09T22:15:55.859629Z

Jeg vil våge å påstå at Eido snart er on-par med Processing for "offline kunst" 🙂

🙌 1
leifericf 2026-04-07T07:11:30.806319Z

Jeg har kanskje hatt et lite fortrinn på det rent konseptuelle/teoretiske og hva jeg ønsker meg pga. fagbrev innen kunst og håndverk, 3D design og animasjon med fordypning i rendering, pluss en del år i spillindustrien som leder for utvikling av en proprietær spillmotor. Men resultatet er ikke helt «der» enda føler jeg.

leifericf 2026-04-07T07:14:04.369179Z

Det kommer støtte for 3D «snart» 😁

💯 1
boosja 2026-04-07T07:14:28.373899Z

Ja, det er litt mer enn meg 😄 Jeg har bare erfaring innenfor webutvikling 😅

leifericf 2026-04-07T07:15:50.387179Z

Dog ikke «real-time» 3D (tror jeg). Jeg vil prøve å unngå GPU-greier så lenge som mulig og holde dette «pure Clojure» uten avhengigheter til Vulkan, WebGL, etc. Tanken er at dette er et verktøy for «offline» kunst-greier.

leifericf 2026-04-07T07:18:34.124389Z

Men jeg har et annet prosjekt i tankene om et generisk shader språk også. Det vil i så fall bli et separat prosjekt som kanskje Eido (eller en annen real-time engine) kan bruke i fremtiden. Typ “Hiccup for 3D shaders.” Men set er en vanskeligere nøtt å knekke fordi shaders har kode i seg, særlig ting som compute shaders.

🤩 1
leifericf 2026-04-07T07:23:02.134589Z

Men jeg vil først se hvor langt jeg klarer å pushe Eido med færrest mulig primitiver og avhengigheter, typ mest mulig ren matematikk og CPU.

leifericf 2026-04-07T07:23:58.099089Z

Mulig jeg skriver en egen 3D grafikkmotor også. Det er faktisk mulig når man har AI støtte.

2026-04-07T07:24:28.911379Z

går det an å tegne på skjermen med CUDA og såntno? Aka kan man hoppe over hele grafikk-APIet og bare gjøre alt sjæl?

🤔 1
teodorlu 2026-04-07T07:55:32.652709Z

veldig tøft!

teodorlu 2026-04-07T07:56:18.005909Z

Fra README: >

;; Read a scene file and render
> (eido/render (eido/read-scene "my-scene.edn") {:output "out.png"})
Gjør du noe spesielt i eido/read-scene som gjør at clojure.edn/read-string ikke kan brukes direkte?

leifericf 2026-04-07T11:56:32.504759Z

Sånn! https://github.com/leifericf/eido?tab=readme-ov-file#3d-gallery

🔥 3
leifericf 2026-04-07T12:02:13.519309Z

@teodorlu: Godt poeng! Nei, read-scene er bare en tynn wrapper rundt edn/read-string + slurp. Den leser filen og parser EDN. Det eneste den legger til er en ex-info med info om filen hvis noe feiler, så du får en mer nyttig feilmelding enn en rå exception. Man kan fint bruke (clojure.edn/read-string (slurp "my-scene.edn")) direkte.

teodorlu 2026-04-07T12:28:09.403109Z

Nice! Spurte fordi jeg lurte på om det var noen custom-typer i bildet eller noe, fint å høre at det bare er vanlige datastrukturer 🙂

👍 1
teodorlu 2026-04-07T12:31:12.810329Z

Jeg tok en titt på implementasjonen. Spenstig at du har klart deg uten avhengigheter! Jeg er også spent på hvor godt vektor-algebraen i eido.math3d holder ytelsesmessig når du bruker Clojure-vektorer og høyere ordens Clojure-funksjoner. Men da har du uansett en konkret, lett start som du kan velge å optimalisere hvis du vil!

👍 1
leifericf 2026-04-07T12:32:31.587059Z

Ja, jeg tipper det tryner på ytelse med mer komplekse scenes 😅

teodorlu 2026-04-07T12:43:15.496379Z

har du gjort noe spesielt for å få Claude til å bruke REPL? Jeg så over CLAUDE.md, og fant instruksjoner for at den skulle kode REPL-drevet, men ikke noen instruksjoner for hvordan den skulle gjøre det. Jeg har gjort litt jobbing for å rigge agenter til å jobbe med REPL selv, men da jobber den ikke full REPL-drevet, den skriver kode og tester, og kjører testene selv mot varm JVM med https://github.com/filipesilva/invoker.

leifericf 2026-04-07T13:00:19.196139Z

Ja, one sec.

leifericf 2026-04-07T13:01:27.233569Z

Jeg fikk et godt tips av @gar https://clojurians.slack.com/archives/C061XGG1W/p1774357018204039?thread_ts=1774274047.654689&cid=C061XGG1W som jeg bruker. Bruker "Light"-versjonen av den der.

👍 1
leifericf 2026-04-07T13:04:39.595719Z

Min CLAUDE.md for Clojure er bygget på AI-analyse av følgende kilder: • Alle Clojure-bøker som er skrevet (som jeg har kjøpt; analysert offline) • Scan av relevante kanaler/tråder i Slack (skrapet fra den der arkivsida noen laget) • Alle talks av Rich Hickey (transkripsjoner fra GitHub) • Kildekoden til flere prominente prosjekter, inkl. Clojure selv • "Functional Core, Imperative Shell" artikler/blog posts • "Tacit/point-free" programmering artikler/blog posts • Clojure sine offisielle guides + div. community guides • Bloggen deres, fra Mattilsynet 🙂 Jeg brukte Perplexity for å gjøre en dyp analyse og lage CLAUDE.md Så har jeg gått over den selv og rettet på flere ting manuelt etterpå.

👍 1
leifericf 2026-04-07T13:59:00.106119Z

Sånn! https://github.com/leifericf/eido?tab=readme-ov-file#particle-gallery 😄

leifericf 2026-04-07T22:09:24.796509Z

Sånn! https://eido.leifericf.com/index.html, som er auto-generert via GitHub Actions 🙂

🙌 1
gunnar 2026-04-08T05:29:40.642229Z

Smooth!

leifericf 2026-04-08T11:43:26.900119Z

@teodorlu: Du spurte om ytelse tidligere. Jeg gjorde https://github.com/leifericf/eido/compare/v1.0.0-alpha5...v1.0.0-alpha6 idag, og det var mye å hente. https://github.com/leifericf/eido/blob/b74bb90262e145e95122d172e35f1a1b04beda60/dev/bench.clj#L129-L298 av alle gains.

🙌 2
leifericf 2026-04-08T11:44:45.814629Z

Det var visst https://github.com/leifericf/eido/blob/b74bb90262e145e95122d172e35f1a1b04beda60/deps.edn#L9-L15 en kunne gjøre på selve JVM-en også.

leifericf 2026-04-08T11:47:32.258299Z

Datavalidering via clojure.spec var visst voldsomt dyrt for store scener, særlig hvis man gjør det på alle "frames" i en animasjon. Så jeg la inn noen regler og flagg for å skippe det steget i enkelte scenarioer.

Ivar Refsdal 2026-04-15T19:08:14.518689Z

Veldeg stileg prosjekt @leif.eric.fredheim ! PS, på https://eido.leifericf.com/reference/manual/ fungerer ikkje lenkene til workflow-ene. F.eks. er det peika til i README.md er det lenka til som ikkje finst

leifericf 2026-04-15T22:10:40.679719Z

Oisann! Takk!

leifericf 2026-04-15T22:21:34.198599Z

Er en fiks på vei nå! Det tar litt tid å bygge hele siden og rendre alle eksemplene (det skjer automatisk via CI/CD).

leifericf 2026-05-04T07:34:11.420159Z

Jeg hadde ikke tenkt å gjøre browser support, fordi da må jeg introdusere WebGPU eller noe sånt. Det er helt klart mulig å gjøre. Men jeg hadde lyst til å unngå å introdusere flere back-ends enn Java 2D.

leifericf 2026-05-04T07:35:08.609469Z

Hmmm. Faktisk, fikk en idé…

leifericf 2026-05-04T07:35:33.696229Z

Det bør vel være mulig å få til Java 2D i browseren som en "dum klient."

leifericf 2026-05-04T07:36:28.165739Z

For øyeblikket fokuserer jeg på https://noumenon.leifericf.com og http://mino-lang.org 🙂 (Fordi jeg skal teste de på jobben.)