announcements

Roman Liutikov 2025-10-02T13:25:51.188029Z

https://github.com/pitch-io/uix — Idiomatic ClojureScript interface to modern React, v1.4.5 is out, com.pitch/uix.core {:mvn/version "1.4.5"} • React 19.2.0 compatibility: ◦ Added uix.core/activity component, see https://react.dev/reference/react/Activity docs ◦ Updated uix.core/use-effect-event to use native useEffectEvent (https://react.dev/blog/2025/10/01/react-19-2#use-effect-event) hook (when available) • Added use-atom hook, see https://github.com/pitch-io/uix/blob/master/docs/hooks.md#use-atom 👋 #uix

🙏 3
🎉 19
Roman Liutikov 2025-10-06T07:16:10.257649Z

Well that depends on the scale of your project. I’d definitely go with event bus for long lasting project where multiple dev teams are involved.

roklenarcic 2025-10-05T21:38:49.309489Z

with stuff like use-atom, it’s getting hard to decide to use the refx with this library or not. I guess the benefit would be the event system

borkdude 2025-10-02T13:37:37.636369Z

https://github.com/babashka/babashka: Native, fast starting Clojure interpreter for scripting 1.12.209 • Bump to clojure 1.12.3 • https://github.com/babashka/babashka/issues/1870: add .addMethod to clojure.lang.MultiFn • https://github.com/babashka/babashka/issues/1869: add clojure.lang.ITransientCollection for instance? checks • https://github.com/babashka/babashka/issues/1865: support reify + equals + hashCode on Object • Add java.nio.charset.CharsetDecoder, java.nio.charset.CodingErrorAction, java.nio.charset.CharacterCodingException in support of the https://github.com/outskirtslabs/sfv library • Fix nrepl-server completions and lookup op to be compatible with rebel-readline • Add clojure.lang.Ref for instance? checks • Bump SCI: align unresolved symbol error message with Clojure • Use GraalVM 25 • Bump deps.clj to 1.12.3.1557 • Change unknown or REPL file path to NO_SOURCE_PATH instead of since this can cause issues on Windows when checking for absolute file paths • https://github.com/babashka/babashka/issues/1001: fix encoding issues on Windows in Powershell. Also see this https://github.com/oracle/graal/issues/12249 issue • Fixes around java.security and allowing setting deprecated Cipher suites at runtime. See this https://github.com/babashka/babashka/commit/ace237832a5844330f5f9c342e1498eb0ca5f7ac. • Support Windows Git Bash in bash install script More news in 🧵

11
🎉 19
borkdude 2025-10-02T13:37:53.750289Z

News • An https://www.emcken.dk/programming/2025/01/09/simple-clojure-lib-for-aws-presigned-urls-and-requests/ aboug the bb-compatible https://github.com/jacobemcken/aws-simple-sign library (recently discovered this one although it's from January) • https://github.com/tonsky/clj-simple-router is another routing library that you can use with httpkit, that works with babashka • https://zenn.dev/tkmfujise/articles/7eebdf57ae9fc3https://github.com/tonsky/clj-reload: now runs with bb • https://github.com/NoahTheDuke/lazytest/releases/tag/v1.9.1: the watch functionality now works with bb • https://github.com/socksy/bb-tower-deploy: Adapt a babashka project to run on http://tower.dev

Chris McCormick 2025-10-02T06:46:21.965089Z

Announcing https://chr15m.github.io/eucalypt/! 🍃 This is the story of how I replaced React & Reagent with 720 lines of slop-coded Squint-cljs and got a 10kb build size. 😹 I wanted to enter the js13k game jam. I wanted to use "ClojureScript". I wanted to use "Reagent". Is there some way I could build a <13kb artifact to satisfy the rules with these constraints? It seemed impossible. Solution: I forked https://bitbucket.org/sonwh98/mr-clean/src/master/ and slop-coded it into compiling with https://github.com/squint-cljs/squint. Outcome: https://github.com/chr15m/eucalypt is a Reagent-compatible-ish https://github.com/squint-cljs/squint library for building frontends with tiny (~10kb) artifacts. Demos: https://chr15m.github.io/eucalypt/. Tests: https://github.com/chr15m/eucalypt/blob/build/test-results.md (don't be fooled though, see below). Try it:

npm create eucalypt myapp
cd myapp
npm install
npm run watch
npm run build
Caveats & warnings. Experimental! If you squint hard enough it looks like Reagent, but it certainly isn't. It's very much a scrappy fiddle. "Slop-coded" means this library was built by 1. creating failing test cases 2. using various LLMs to fix the code until all tests pass. I spent literally TENS of dollars on magic computer-brain credits. 💸 I did this while concentrating on other things and I haven't spent a lot of time groking the code. If this development process makes you uncomfortable (as it makes me uncomfortable) then you should probably take care when running it. Do not be fooled by the 90/90 passing tests - it's almost certainly bug-ridden. 🐛 It's probably not for production systems, unless yeeting slop-code onto your live server is a thing at your company. It might be appropriate for small bits of frontend, demos, or gamejam entries where size is important and your particular Reagent form happens to not segfault and delete all your files. Ok, have lawyer-proofed this enough? 😅 It's not my fault it was the magic computer brain your honour! All that said, it's pretty fun being able to write Reagent-like code and https://endtimes.dev/why-your-website-should-be-under-14kb-in-size/. It would be great to get some human eyeballs & brains on this and clean it up, find more failing Reagent forms, add more tests etc. PRs most welcome! Assume the code is terrible and your fix will be appreciated. Note that the goal is not a one-to-one replacement for the whole Reagent API, but the 80% most commonly used (at the moment it's just r/atom and r/render and form-1 and form-2 components). I would like it to remain under-engineered and simple. Thank you! Bonus addenda: Borkdude's LLM-generated game demos: • Game of life: https://squint-cljs.github.io/squint/?src=KG5zIGxpZmUuY29yZQogICg6cmVxdWlyZQogICAgWyJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2V1Y2FseXB0QDAuMC4zLytlc20iIDphcyByXSkpCgooZGVmIHNpemUgMzApICAgOzsgZ3JpZCBzaXplICgzMHgzMCkKKGRlZiBjZWxsIDE1KSA7OyBlYWNoIGNlbGwgPSAxNXB4CgooZGVmbiByYW5kCiAgIlJldHVybiBhIHJhbmRvbSBkb3VibGUgaW4gWzAuMCwgbikgaWYgbiBnaXZlbiwgZWxzZSBbMC4wLDEpLiIKICAoW10gKGpzL01hdGgucmFuZG9tKSkKICAoW25dICgqIG4gKGpzL01hdGgucmFuZG9tKSkpKQoKKGRlZm4gcmFuZG9tLWdyaWQgW10KICAodmVjIChmb3IgW3kgKHJhbmdlIHNpemUpXQogICAgICAgICAodmVjIChmb3IgW3ggKHJhbmdlIHNpemUpXQogICAgICAgICAgICAgICAgKGlmICg8IChyYW5kKSAwLjIpIDEgMCkpKSkpKQoKKGRlZm9uY2Ugc3RhdGUKICAoci9hdG9tIHs6Z3JpZCAocmFuZG9tLWdyaWQpCiAgICAgICAgICAgOnJ1bm5pbmc%2FIHRydWV9KSkKCihkZWZuIG5laWdoYm9ycyBbZ3JpZCB4IHldCiAgKGxldCBbY29vcmRzIFtbLTEgLTFdIFswIC0xXSBbMSAtMV0KICAgICAgICAgICAgICAgIFstMSAwXSAgICAgICAgIFsxIDBdCiAgICAgICAgICAgICAgICBbLTEgMV0gIFswIDFdICBbMSAxXV1dCiAgICAocmVkdWNlCiAgICAgIChmbiBbYWNjIFtkeCBkeV1dCiAgICAgICAgKGxldCBbbnggKCsgeCBkeCkgbnkgKCsgeSBkeSldCiAgICAgICAgICAoaWYgKGFuZCAoPj0gbnggMCkgKDwgbnggc2l6ZSkKICAgICAgICAgICAgICAgICAgICg%2BPSBueSAwKSAoPCBueSBzaXplKSkKICAgICAgICAgICAgKCsgYWNjIChudGggKG50aCBncmlkIG55KSBueCkpCiAgICAgICAgICAgIGFjYykpKQogICAgICAwCiAgICAgIGNvb3JkcykpKQoKKGRlZm4gc3RlcCBbZ3JpZF0KICAodmVjIChmb3IgW3kgKHJhbmdlIHNpemUpXQogICAgICAgICAodmVjIChmb3IgW3ggKHJhbmdlIHNpemUpXQogICAgICAgICAgICAgICAgKGxldCBbYWxpdmU%2FICg9IChudGggKG50aCBncmlkIHkpIHgpIDEpCiAgICAgICAgICAgICAgICAgICAgICBuIChuZWlnaGJvcnMgZ3JpZCB4IHkpXQogICAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAgIChhbmQgYWxpdmU%2FIChvciAoPSBuIDIpICg9IG4gMykpKSAxCiAgICAgICAgICAgICAgICAgICAgKGFuZCAobm90IGFsaXZlPykgKD0gbiAzKSkgMQogICAgICAgICAgICAgICAgICAgIDplbHNlIDApKSkpKSkpCgooZGVmbiB0aWNrIFtdCiAgKHN3YXAhIHN0YXRlCiAgICAgICAgIChmbiBbezprZXlzIFtncmlkIHJ1bm5pbmc%2FXSA6YXMgc3R9XQogICAgICAgICAgIChpZiBydW5uaW5nPwogICAgICAgICAgICAgKGFzc29jIHN0IDpncmlkIChzdGVwIGdyaWQpKQogICAgICAgICAgICAgc3QpKSkpCgooanMvc2V0SW50ZXJ2YWwgdGljayAyMDApCgooZGVmbiBjZWxsLXJlY3QgW3ggeSBhbGl2ZT9dCiAgWzpyZWN0IHs6eCAoKiB4IGNlbGwpIDp5ICgqIHkgY2VsbCkKICAgICAgICAgIDp3aWR0aCBjZWxsIDpoZWlnaHQgY2VsbAogICAgICAgICAgOmZpbGwgKGlmICg9IGFsaXZlPyAxKSAiYmxhY2siICJ3aGl0ZSIpCiAgICAgICAgICA6c3Ryb2tlICIjZGRkIn1dKQoKKGRlZm4gYm9hcmQgW10KICAobGV0IFt7OmtleXMgW2dyaWQgcnVubmluZz9dfSBAc3RhdGVdCiAgICBbOnN2ZyB7OndpZHRoICgqIHNpemUgY2VsbCkgOmhlaWdodCAoKiBzaXplIGNlbGwpCiAgICAgICAgICAgOnN0eWxlIHs6Ym9yZGVyICIxcHggc29saWQgYmxhY2sifX0KICAgICAoZm9yIFt5IChyYW5nZSBzaXplKQogICAgICAgICAgIHggKHJhbmdlIHNpemUpXQogICAgICAgXns6a2V5IChzdHIgeCAiLSIgeSl9CiAgICAgICBbY2VsbC1yZWN0IHggeSAobnRoIChudGggZ3JpZCB5KSB4KV0pCiAgICAgKHdoZW4gKG5vdCBydW5uaW5nPykKICAgICAgIFs6dGV4dCB7OnggNTAgOnkgNTAgOmZpbGwgInJlZCIgOmZvbnQtc2l6ZSAyMH0gIlBhdXNlZCJdKV0pKQoKKHIvcmVuZGVyCiAgW2JvYXJkXQogIChvcgogICAgKGpzL2RvY3VtZW50LmdldEVsZW1lbnRCeUlkICJhcHAiKQogICAgKGRvdG8gKGpzL2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgImRpdiIpCiAgICAgIChhc2V0ICJpZCIgImFwcCIpCiAgICAgIChqcy9kb2N1bWVudC5ib2R5LnByZXBlbmQpKSkp • Snake: https://squint-cljs.github.io/squint/?src=KG5zIGRlbW8KICAoOnJlcXVpcmUKICAgWyJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2V1Y2FseXB0QDAuMC4zLytlc20iIDphcyByXQogICBbImh0dHBzOi8vZXNtLnNoL2VzLXRvb2xraXQiIDpyZWZlciBbaXNFcXVhbF1dKSkKCihkZWYgc2l6ZSAyMCkgICAgOzsgZ3JpZCBzaXplICgyMHgyMCkKKGRlZiBjZWxsIDEwKSAgICA7OyBlYWNoIGNlbGwgPSAxMHB4CgooZGVmb25jZSBzdGF0ZQogIChyL2F0b20gezpzbmFrZSBbWzUgMTBdIFs0IDEwXSBbMyAxMF1dIDsgaW5pdGlhbCBzbmFrZSBib2R5CiAgICAgICAgICAgOmRpciBbMSAwXSAgICAgICAgICAgICAgICAgICAgOyBtb3ZpbmcgcmlnaHQKICAgICAgICAgICA6Zm9vZCBbMTUgMTBdICAgICAgICAgICAgICAgICA7IGluaXRpYWwgZm9vZAogICAgICAgICAgIDphbGl2ZT8gdHJ1ZX0pKQoKKGRlZm4gcmFuZG9tLWZvb2QgW10KICBbKHJhbmQtaW50IHNpemUpIChyYW5kLWludCBzaXplKV0pCgooZGVmbiBtb3ZlLXNuYWtlIFtdCiAgKHN3YXAhIHN0YXRlCiAgICAgICAgIChmbiBbezprZXlzIFtzbmFrZSBkaXIgZm9vZCBhbGl2ZT9dIDphcyBzdH1dCiAgICAgICAgICAgKGlmIChub3QgYWxpdmU%2FKQogICAgICAgICAgICAgc3QKICAgICAgICAgICAgIChsZXQgW2hlYWQgKHZlYyBbKCsgKG50aCAoZmlyc3Qgc25ha2UpIDApIChudGggZGlyIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyAobnRoIChmaXJzdCBzbmFrZSkgMSkgKG50aCBkaXIgMSkpXSkKICAgICAgICAgICAgICAgICAgIGF0ZT8gKGlzRXF1YWwgaGVhZCBmb29kKQogICAgICAgICAgICAgICAgICAgbmV3LXNuYWtlICh2ZWMgKGNvbnMgaGVhZCAoaWYgYXRlPyBzbmFrZSAoYnV0bGFzdCBzbmFrZSkpKSkKICAgICAgICAgICAgICAgICAgIHggKG50aCBoZWFkIDApCiAgICAgICAgICAgICAgICAgICB5IChudGggaGVhZCAxKQogICAgICAgICAgICAgICAgICAgaGl0LXdhbGw%2FIChvciAoPCB4IDApICg8IHkgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD49IHggc2l6ZSkgKD49IHkgc2l6ZSkpCiAgICAgICAgICAgICAgICAgICBoaXQtc2VsZj8gKHNvbWUgIyhpc0VxdWFsIGhlYWQgJSkgKHJlc3QgbmV3LXNuYWtlKSldCiAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgaGl0LXdhbGw%2FIChhc3NvYyBzdCA6YWxpdmU%2FIGZhbHNlKQogICAgICAgICAgICAgICAgIGhpdC1zZWxmPyAoYXNzb2Mgc3QgOmFsaXZlPyBmYWxzZSkKICAgICAgICAgICAgICAgICBhdGU%2FICAgICAgKGFzc29jIHN0IDpzbmFrZSBuZXctc25ha2UgOmZvb2QgKHJhbmRvbS1mb29kKSkKICAgICAgICAgICAgICAgICA6ZWxzZSAgICAgKGFzc29jIHN0IDpzbmFrZSBuZXctc25ha2UpKSkpKSkpCgo7OyBUaW1lciBsb29wCihqcy9zZXRJbnRlcnZhbCBtb3ZlLXNuYWtlIDIwMCkKCjs7IEtleWJvYXJkIGNvbnRyb2xzCiguYWRkRXZlbnRMaXN0ZW5lciBqcy93aW5kb3cgImtleWRvd24iCiAgIChmbiBbZV0KICAgICAobGV0IFtrZXkgKC4ta2V5IGUpXQogICAgICAgKHN3YXAhIHN0YXRlIHVwZGF0ZSA6ZGlyCiAgICAgICAgICAgICAgKGZuIFtkaXJdCiAgICAgICAgICAgICAgICAoY2FzZSBrZXkKICAgICAgICAgICAgICAgICAgIkFycm93VXAiICAgIChpZiAoaXNFcXVhbCBkaXIgWzAgMV0pIGRpciBbMCAtMV0pCiAgICAgICAgICAgICAgICAgICJBcnJvd0Rvd24iICAoaWYgKGlzRXF1YWwgZGlyIFswIC0xXSkgZGlyIFswIDFdKQogICAgICAgICAgICAgICAgICAiQXJyb3dMZWZ0IiAgKGlmIChpc0VxdWFsIGRpciBbMSAwXSkgZGlyIFstMSAwXSkKICAgICAgICAgICAgICAgICAgIkFycm93UmlnaHQiIChpZiAoaXNFcXVhbCBkaXIgWy0xIDBdKSBkaXIgWzEgMF0pCiAgICAgICAgICAgICAgICAgIGRpcikpKSkpKQoKKGRlZm4gY2VsbC1yZWN0IFtbeCB5XSBjb2xvcl0KICBbOnJlY3Qgezp4ICgqIHggY2VsbCkgOnkgKCogeSBjZWxsKQogICAgICAgICAgOndpZHRoIGNlbGwgOmhlaWdodCBjZWxsCiAgICAgICAgICA6ZmlsbCBjb2xvcn1dKQoKKGRlZm4gZ2FtZS1ib2FyZCBbXQogIChsZXQgW3s6a2V5cyBbc25ha2UgZm9vZCBhbGl2ZT9dfSBAc3RhdGVdCiAgICBbOnN2ZyB7OndpZHRoICgqIHNpemUgY2VsbCkgOmhlaWdodCAoKiBzaXplIGNlbGwpCiAgICAgICAgICAgOnN0eWxlIHs6Ym9yZGVyICIxcHggc29saWQgYmxhY2siCiAgICAgICAgICAgICAgICAgICA6YmFja2dyb3VuZCAiI2VlZiJ9fQogICAgIDs7IHNuYWtlCiAgICAgKGZvciBbcGFydCBzbmFrZV0KICAgICAgIF57OmtleSAoc3RyIHBhcnQpfSBbY2VsbC1yZWN0IHBhcnQgImdyZWVuIl0pCiAgICAgOzsgZm9vZAogICAgIFtjZWxsLXJlY3QgZm9vZCAicmVkIl0KICAgICA7OyBnYW1lIG92ZXIgb3ZlcmxheQogICAgICh3aGVuIChub3QgYWxpdmU%2FKQogICAgICAgWzp0ZXh0IHs6eCA1MCA6eSAxMDAgOmZvbnQtc2l6ZSAyMCA6ZmlsbCAiYmxhY2sifSAiR2FtZSBPdmVyISJdKV0pKQoKKHIvcmVuZGVyCiAgW2dhbWUtYm9hcmRdCiAgKG9yCiAgICAoanMvZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgImFwcCIpCiAgICAoZG90byAoanMvZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAiZGl2IikKICAgICAgKGFzZXQgImlkIiAiYXBwIikKICAgICAgKGpzL2RvY3VtZW50LmJvZHkucHJlcGVuZCkpKSk%3D • Tic Tac Toe: https://squint-cljs.github.io/squint/?src=KG5zIGRlbW8KICAoOnJlcXVpcmUKICAgWyJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2V1Y2FseXB0QDAuMC4zLytlc20iIDphcyByXSkpCgooZGVmbiBuZXctZ2FtZSBbXQogIHs6Ym9hcmQgKHZlYyAocmVwZWF0IDkgbmlsKSkKICAgOngtdHVybj8gdHJ1ZX0pCgooZGVmb25jZSBzdGF0ZSAoci9hdG9tIChuZXctZ2FtZSkpKQoKKGRlZm4gd2lubmVyIFtib2FyZF0KICAobGV0IFtsaW5lcyBbWzAgMSAyXSBbMyA0IDVdIFs2IDcgOF0KICAgICAgICAgICAgICAgWzAgMyA2XSBbMSA0IDddIFsyIDUgOF0KICAgICAgICAgICAgICAgWzAgNCA4XSBbMiA0IDZdXV0KICAgIChzb21lIChmbiBbW2EgYiBjXV0KICAgICAgICAgICAgKHdoZW4gKGFuZCAoZ2V0IGJvYXJkIGEpCiAgICAgICAgICAgICAgICAgICAgICAgKD0gKGdldCBib2FyZCBhKSAoZ2V0IGJvYXJkIGIpIChnZXQgYm9hcmQgYykpKQogICAgICAgICAgICAgIChnZXQgYm9hcmQgYSkpKQogICAgICAgICAgbGluZXMpKSkKCihkZWZuIHNxdWFyZSBbaV0KICAobGV0IFt7OmtleXMgW2JvYXJkIHgtdHVybj9dfSBAc3RhdGUKICAgICAgICBtYXJrIChnZXQgYm9hcmQgaSldCiAgICBbOmRpdiB7OnN0eWxlIHs6d2lkdGggIjYwcHgiIDpoZWlnaHQgIjYwcHgiCiAgICAgICAgICAgICAgICAgICA6Ym9yZGVyICIxcHggc29saWQgIzAwMCIKICAgICAgICAgICAgICAgICAgIDpkaXNwbGF5ICJmbGV4IiA6YWxpZ24taXRlbXMgImNlbnRlciIKICAgICAgICAgICAgICAgICAgIDpqdXN0aWZ5LWNvbnRlbnQgImNlbnRlciIKICAgICAgICAgICAgICAgICAgIDpmb250LXNpemUgIjI0cHgiCiAgICAgICAgICAgICAgICAgICA6Y3Vyc29yICJwb2ludGVyIn0KICAgICAgICAgICA6b24tY2xpY2sgIyh3aGVuIChhbmQgKG5pbD8gbWFyaykgKG5vdCAod2lubmVyIGJvYXJkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChzd2FwISBzdGF0ZSB1cGRhdGUgOmJvYXJkIGFzc29jIGkgKGlmIHgtdHVybj8gIlgiICJPIikpCiAgICAgICAgICAgICAgICAgICAgICAgIChzd2FwISBzdGF0ZSB1cGRhdGUgOngtdHVybj8gbm90KSl9CiAgICAgbWFya10pKQoKKGRlZm4gYm9hcmQtdmlldyBbXQogIChsZXQgW3s6a2V5cyBbYm9hcmRdfSBAc3RhdGVdCiAgICBbOmRpdiB7OnN0eWxlIHs6ZGlzcGxheSAiZ3JpZCIKICAgICAgICAgICAgICAgICAgIDpncmlkLXRlbXBsYXRlLWNvbHVtbnMgInJlcGVhdCgzLCA2MHB4KSIKICAgICAgICAgICAgICAgICAgIDpncmlkLXRlbXBsYXRlLXJvd3MgInJlcGVhdCgzLCA2MHB4KSIKICAgICAgICAgICAgICAgICAgIDpnYXAgIjJweCJ9fQogICAgIChmb3IgW2kgKHJhbmdlIDkpXQogICAgICAgXns6a2V5IGl9IFtzcXVhcmUgaV0pXSkpCgooZGVmbiBnYW1lIFtdCiAgKGxldCBbezprZXlzIFtib2FyZCB4LXR1cm4%2FXX0gQHN0YXRlCiAgICAgICAgdyAod2lubmVyIGJvYXJkKV0KICAgIFs6ZGl2IHs6c3R5bGUgezpmb250LWZhbWlseSAic2Fucy1zZXJpZiJ9fQogICAgIFtib2FyZC12aWV3XQogICAgIChjb25kCiAgICAgICB3IFs6cCAoc3RyICJXaW5uZXI6ICIgdyldCiAgICAgICAoZXZlcnk%2FIHNvbWU%2FIGJvYXJkKSBbOnAgIkRyYXchIl0KICAgICAgIDplbHNlIFs6cCAoc3RyICJOZXh0IHR1cm46ICIgKGlmIHgtdHVybj8gIlgiICJPIikpXSkKICAgICBbOmJ1dHRvbiB7Om9uLWNsaWNrICMocmVzZXQhIHN0YXRlIChuZXctZ2FtZSkpfQogICAgICAiUmVzdGFydCJdXSkpCgooci9yZW5kZXIKICBbZ2FtZV0KICAob3IKICAgIChqcy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCAiYXBwIikKICAgIChkb3RvIChqcy9kb2N1bWVudC5jcmVhdGVFbGVtZW50ICJkaXYiKQogICAgICAoYXNldCAiaWQiICJhcHAiKQogICAgICAoanMvZG9jdW1lbnQuYm9keS5wcmVwZW5kKSkpKQ%3D%3D Plot twist: I never did finish my gamejam game. 😅 🙇‍♂️

2
🥬 5
🤖 7
😄 2
11
🎉 21
borkdude 2025-10-02T07:55:08.521809Z

Here is also a clock demo: https://squint-cljs.github.io/squint/?src=KG5zIGRlbW8KICAoOnJlcXVpcmUKICAgWyJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2V1Y2FseXB0QDAuMC4zLytlc20iIDphcyByXSkpCgooZGVmbiBjbG9jay1oYW5kIFthbmdsZSBsZW5ndGggc3Ryb2tlLXdpZHRoIGNvbG9yXQogIFs6bGluZSB7OngxIDUwIDp5MSA1MAogICAgICAgICAgOngyICgrIDUwICgqIGxlbmd0aCAoTWF0aC9zaW4gKC8gKCogTWF0aC9QSSBhbmdsZSkgMTgwKSkpKQogICAgICAgICAgOnkyICgtIDUwICgqIGxlbmd0aCAoTWF0aC9jb3MgKC8gKCogTWF0aC9QSSBhbmdsZSkgMTgwKSkpKQogICAgICAgICAgOnN0cm9rZSBjb2xvcgogICAgICAgICAgOnN0cm9rZS13aWR0aCBzdHJva2Utd2lkdGgKICAgICAgICAgIDpzdHJva2UtbGluZWNhcCAicm91bmQifV0pCgooZGVmbiBjbG9jayBbXQogIChsZXQgW3RpbWUgKHIvYXRvbSAoanMvRGF0ZS4pKV0KICAgIChqcy9zZXRJbnRlcnZhbCAjKHJlc2V0ISB0aW1lIChqcy9EYXRlLikpIDEwMDApCiAgICAoZm4gW10KICAgICAgKGxldCBbbm93IEB0aW1lCiAgICAgICAgICAgIGggKCogMzAgKCsgKC5nZXRIb3VycyBub3cpICgvICguZ2V0TWludXRlcyBub3cpIDYwKSkpIDsgaG91cnMKICAgICAgICAgICAgbSAoKiA2ICguZ2V0TWludXRlcyBub3cpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBtaW51dGVzCiAgICAgICAgICAgIHMgKCogNiAoLmdldFNlY29uZHMgbm93KSldICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgc2Vjb25kcwogICAgICAgIFs6c3ZnIHs6d2lkdGggMjAwIDpoZWlnaHQgMjAwIDp2aWV3Qm94ICIwIDAgMTAwIDEwMCJ9CiAgICAgICAgIDs7IGNsb2NrIGZhY2UKICAgICAgICAgWzpjaXJjbGUgezpjeCA1MCA6Y3kgNTAgOnIgNDggOmZpbGwgIiNmZmYiIDpzdHJva2UgIiMwMDAifV0KICAgICAgICAgOzsgaG91ciBoYW5kCiAgICAgICAgIFtjbG9jay1oYW5kIGggMjUgMyAiYmxhY2siXQogICAgICAgICA7OyBtaW51dGUgaGFuZAogICAgICAgICBbY2xvY2staGFuZCBtIDM1IDIgImJsdWUiXQogICAgICAgICA7OyBzZWNvbmQgaGFuZAogICAgICAgICBbY2xvY2staGFuZCBzIDQwIDEgInJlZCJdCiAgICAgICAgIDs7IGNlbnRlciBkb3QKICAgICAgICAgWzpjaXJjbGUgezpjeCA1MCA6Y3kgNTAgOnIgMS41IDpmaWxsICIjMDAwIn1dXSkpKSkKCihyL3JlbmRlcgogIFtjbG9ja10KICAob3IKICAgIChqcy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCAiYXBwIikKICAgIChkb3RvIChqcy9kb2N1bWVudC5jcmVhdGVFbGVtZW50ICJkaXYiKQogICAgICAoYXNldCAiaWQiICJhcHAiKQogICAgICAoanMvZG9jdW1lbnQuYm9keS5wcmVwZW5kKSkpKQ%3D%3D

borkdude 2025-10-02T08:08:33.810819Z

I think it's worth noting that you used an LLM probably because you had a severe time contraint, but considering the little amount of code that Eucalypt is and that there is a reference implementation (Mr. Clean) we could get it in a curated state, improve performance, compatibility while keeping it small and simple

👍 4
gunnar 2025-10-02T11:18:34.317049Z

This is really cool! A question about this gotcha: > (get {} :a) evaluates to undefined not nil which can break assoc, update and friends on nil Is this something that can be "fixed" in squint? I.e. taking an opinionated approach on handling undefined.

borkdude 2025-10-02T11:19:25.974819Z

probably yes

borkdude 2025-10-02T11:19:32.769609Z

I think it's already fixed

🙌 1
borkdude 2025-10-02T11:22:25.887269Z

at least this was fixed recently. not yet released but could do now.

borkdude@MBP25-2 ~/dev/squint (main*) $ ./node_cli.js -e '(js/console.log (assoc js/undefined :a 1))'
{ a: 1 }
borkdude@MBP25-2 ~/dev/squint (main*) $ ./node_cli.js -e '(js/console.log (assoc-in js/undefined [:a] 1))'
{ a: 1 }

borkdude 2025-10-02T11:23:00.511659Z

let me just do that, then we can remove that from the README

borkdude 2025-10-02T11:25:42.730099Z

done, 0.8.155 released - cc @chris358

🎉 2
Chris McCormick 2025-10-02T11:29:57.667039Z

BTW I added your SVG clock demo to the demos already.

borkdude 2025-10-02T11:30:09.001549Z

nice! :)

Chris McCormick 2025-10-02T11:31:20.392149Z

I'm putting together a demo page with your other LLM generated games too, but it uncovered a Eucalypt bug so I couldn't publish it yet.

borkdude 2025-10-02T11:32:14.928669Z

oh interesting

Chris McCormick 2025-10-02T11:40:07.338539Z

https://github.com/chr15m/eucalypt/issues/7

Chris McCormick 2025-10-02T11:40:13.587089Z

Needs a minimal repro

borkdude 2025-10-02T12:26:54.558069Z

I'm hitting 120 on my macbook pro, so that's good

borkdude 2025-10-02T12:27:17.941689Z

that's the refresh sequence of my monitor

Chris McCormick 2025-10-02T12:27:34.567689Z

60 here. I thought you meant you'd already built a full first person shooter game.

borkdude 2025-10-02T12:27:52.082489Z

sorry for the disappointment

😄 3
2025-10-02T13:24:18.821529Z

Added to https://clojure.land

3