This has been around for a long time and I've always been so surprised it has had seemingly so little traction outside of the author's own projects. The love and care and thoughtfulness of every library has always been so great to explore.
thi.ng is great and should really get more attention. The packages have a very clean and atomic structure, you can easily pick one or more and use them in your project.
I started using the thi.ng collection a couple of years ago when I had more time for creative code sketching (https://guidoschmidt.cc/sketchbook, father of two now, with full time work + family its hard for me to find time and motivation at the moment. Hopefully will get back to it more in the future), still only scratched the surface yet.
Thanks for sharing, love the sketchbook. I'm into tree structures, cellular automata and other models of computation, fractals, etc., so immediately I resonated with your artworks. Oh and you do light art too, that sounds cool! I imagine there are tons of fun things you can do with mathematics, geometry, and light projection.
Of the thi.ng library I've only looked at a few modules so far but I really like the clean organization, functional style, and how each module is independently useful. The whole thing has good taste, a quality that's hard to explain but "you know it when you see it." I'm looking forward to playing with it, like a new box of Lego blocks, haha.
It's extremely modular and simple and extensible. It's a collecting of small libaries that makes generating arbitrary vector graphics extremely fun. You have a base SVG layer and on top you have a charting library, 3D models and other stuff. It also comes with a ton of cool math mini libraries. If something is missing it's very easy to write your own.
All the pieces are very decoupled and in pure Clojure (unlike a lot of the heavier scicloj stuff that's being use nowadays)
When the five cubes a bit down on the page spin diagonally, my whole browser window including address bar and tab bar starts glitching. Chrome on macOS.
You can find his talk about it a bit on Twitter and in the Github issues. But as far as I remember it mostly boils down to the fact that thing/geom got very little traction and external contributions. He developed this huge ecosystem on his own to make digital art but it wasn't being really picked up by others. Digital art is typically quite collaborative with people giving workshops and stuff. The switch to TS was so that other's would join up and develop the library together.
Note that part of the problem was that the library was written in a highly unusual literate style. So you had to clone the repo, then use Emac's Orgmode to tangle it to get the Clojure source code. This created a lot of friction for people to contribute.
Also before deps.edn (Clojure built-in dependency management) was added to the language you had to use leiningen which didn't make using a locally cloned fork as easy as it is now (now you just point to the library file directory and it "just works")
I really wish that there was an agreed-upon/universally-accepted Literate Programming system (or that for a given system, sufficiently varied tools for availing oneself of them as to foster acceptance), but pretty much every programmer's approach is unique, incompatible, and a hurdle for anyone else to use their code....
> Or are there other reasons why this lib was moved to TS?
I'm pretty sure reach was the motivation. The author basically wrote his own TypeScript libraries duplicating a bunch of Clojure stuff, so the code is quite Clojure-like still.
This has been around for a long time and I've always been so surprised it has had seemingly so little traction outside of the author's own projects. The love and care and thoughtfulness of every library has always been so great to explore.
Main monorepo: https://codeberg.org/thi.ng/umbrella
Looks like a collection of many useful general-purpose dependency-free modules written in TypeScript.
thi.ng is great and should really get more attention. The packages have a very clean and atomic structure, you can easily pick one or more and use them in your project.
fun fact: you can reach each package from a https://thi.ng/PACKAGE short URL, e.g. https://thi.ng/color.
I started using the thi.ng collection a couple of years ago when I had more time for creative code sketching (https://guidoschmidt.cc/sketchbook, father of two now, with full time work + family its hard for me to find time and motivation at the moment. Hopefully will get back to it more in the future), still only scratched the surface yet.
https://www.creativeapplications.net/people/karsten-schmidt/ has a great history of Karsten's work. Also worth checking out his mastodon profile: https://mastodon.thi.ng/@toxi
Thanks for sharing, love the sketchbook. I'm into tree structures, cellular automata and other models of computation, fractals, etc., so immediately I resonated with your artworks. Oh and you do light art too, that sounds cool! I imagine there are tons of fun things you can do with mathematics, geometry, and light projection.
Of the thi.ng library I've only looked at a few modules so far but I really like the clean organization, functional style, and how each module is independently useful. The whole thing has good taste, a quality that's hard to explain but "you know it when you see it." I'm looking forward to playing with it, like a new box of Lego blocks, haha.
https://codeberg.org/thi.ng/umbrella/src/branch/develop/pack...
That's an interesting take at ECS, seems to do lots of optimizations under the hood too.
I'm surprised to not have heard of those libraries until now.
I see very nasty GPU bugs on this page. never witnessed it before. My laptop is macbook m3.
I managed to record them https://youtu.be/9EpfeUbkPT8
Almost wondering if itβs intentional! Pretty bug!
the flicker gets really bad on my browser
thi-ng/geom is my favorite Clojure project.
What makes it your favorite Clojure project?
It's extremely modular and simple and extensible. It's a collecting of small libaries that makes generating arbitrary vector graphics extremely fun. You have a base SVG layer and on top you have a charting library, 3D models and other stuff. It also comes with a ton of cool math mini libraries. If something is missing it's very easy to write your own.
All the pieces are very decoupled and in pure Clojure (unlike a lot of the heavier scicloj stuff that's being use nowadays)
When the five cubes a bit down on the page spin diagonally, my whole browser window including address bar and tab bar starts glitching. Chrome on macOS.
On ios safari the bottom 5 cubes are just 1 flat pancake, chrome ios does render the cubes but have slight artifacting on the edges mmmmm
I believe the new libs are now all in TS and not Clojure anymore.
Does that mean TS is better suited for computational art?
Or are there other reasons why this lib was moved to TS?
You can find his talk about it a bit on Twitter and in the Github issues. But as far as I remember it mostly boils down to the fact that thing/geom got very little traction and external contributions. He developed this huge ecosystem on his own to make digital art but it wasn't being really picked up by others. Digital art is typically quite collaborative with people giving workshops and stuff. The switch to TS was so that other's would join up and develop the library together.
Note that part of the problem was that the library was written in a highly unusual literate style. So you had to clone the repo, then use Emac's Orgmode to tangle it to get the Clojure source code. This created a lot of friction for people to contribute.
Also before deps.edn (Clojure built-in dependency management) was added to the language you had to use leiningen which didn't make using a locally cloned fork as easy as it is now (now you just point to the library file directory and it "just works")
I really wish that there was an agreed-upon/universally-accepted Literate Programming system (or that for a given system, sufficiently varied tools for availing oneself of them as to foster acceptance), but pretty much every programmer's approach is unique, incompatible, and a hurdle for anyone else to use their code....
> Or are there other reasons why this lib was moved to TS?
I'm pretty sure reach was the motivation. The author basically wrote his own TypeScript libraries duplicating a bunch of Clojure stuff, so the code is quite Clojure-like still.
Is there a particular motivation for chosing Clojure?
https://github.com/thi-ng/ there doesn't seem to be a lot of clojure anymore? Unless clojurescript is tagged as typescript in github that is?!
Coooooooool