Remembering dear Roman Verostko, who died this month two years ago, aged 94. An highly influential figure, not just for algorithmic art in general, but also for younger me personally, after meeting him during a panel discussion at the Victoria & Albert Museum in London and then corresponding for several years after...

Living as a monk and ordained priest in the 1950/60s, he absolutely cherished his limited computer time which he had first access to as student. The more he learned about automata, automatic drawing, algorithms, rule-based methods, natural processes etc. the more his belief in religion (vs. spirituality) and in an omniscient creator was fundamentally challenged, causing years of deep internal turmoil and eventually leading him to leave the monastery to lead a secular life dedicated to making art as means to finding/reconciling answers.

Even though both of our lives (and works) couldn't have been more different, we quickly found a kindred spirit and shared an awe of nature as primary source of inspiration. I'm sad we never met again in person, but his story and insights have stayed with me...

(Remembering him today as I'm sorting through older pieces of mine, and it was him who originally encouraged me to investigate more plotter-based art forms/techniques, an advice I only heeded over a decade later... ๐Ÿซถ)

RIP ๐Ÿ–ค

#TextureTuesday #AlgorithmicArt #PlotterArt #PenPlotter #Axidraw #ThingUmbrella

I don't do these often (only once or twice a year, if at all), but since I just lost the main sponsor of my open source work (forever grateful for their long & major support!), I urgently need to reach out to other people (especially users) for financial help with the continued development, documentation and maintenance efforts (incl. hosting costs) of the primarily 215 TypeScript libraries and 185 example projects in https://thi.ng/umbrella, but also other existing & still unreleased work/projects/tools (also Zig, Clojure)... The breadth and depth of the larger project is impossible to summarize (see project readme for an overview)

I'm regularly posting updates related to these projects (and examples) using the #ThingUmbrella and #HowToThing hashtags.

Being between roles, these donations are my only income at current, so every little helps! The projects have been in active long term development (some of them since 2016). In a typical irony of the universe kind of event, just yesterday the projects were featured on the frontpage of Hacker News[1] for over 12 hours and here's what some people had to say:

"this is a absolutely remarkable set of libraries covering all kinds of nooks and cranies. It's worth putting on everyones list."

"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."

"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."

If you have any questions, please reach out here (or via DM) or the issue tracker on Codeberg:

https://codeberg.org/thi.ng/umbrella/issues/

(I'm not always able to help [esp. when there are super detailed long requests/questions], but I'm doing my best to be helpful...)

Deep gratitude and thank you to all my other supporters for your ongoing help and new ones for your consideration. Possible ways of funding are listed here (i.e. Liberapay, Stripe, Github Sponsors, Patreon):

https://codeberg.org/thi.ng/umbrella/src/branch/develop/CONTRIBUTING.md#donations

๐Ÿ™๐Ÿซถ

Happy coding!

[1] https://mastodon.thi.ng/@toxi/116720614748185091

#OpenSource #ThingUmbrella #Fundraising

thi.ng/umbrella

thi.ng/umbrella

Since it seems to come up every single time thi.ng is mentioned on HN or Reddit: Here's another partial clarification why and when the transition from originally mostly Clojure/ClojureScript to mostly TypeScript occurred:

https://news.ycombinator.com/item?id=48468029

It's not a comprehensive answer, but thi.ng always was a polyglot project. There're also parts written in (and for):

There are infrastructure packages to simplify creation of ad hoc DSLs, their transpilation or interpretation, but also interop with WASM (so far mostly geared towards & tested with Zig), for example:

In general, thi.ng projects range from super high level computational design concepts to low-level primitives like memory allocators and memory/data layout management (e.g. http://thi.ng/tinyalloc, https://thi.ng/malloc, https://thi.ng/simd, https://thi.ng/soa) and a huge spectrum of other things in between...

#ThingUmbrella

Author here. The move to TypeScript was due to multiple reasons, one of them as ... | Hacker News

Three years ago, I was busy finishing Marblemania, an endless algorithmic/generative realtime animation piece inspired by marbling, using softbody physics (but no actual fluid sim) and with thousands of variations and stylistic options...

This video shows stills of a small sampling of these variations.

More variations here (and in the #Marblemania hashtag):

https://mastodon.thi.ng/@toxi/110688682293173253
https://mastodon.thi.ng/@toxi/110667570347783712

#TextureTuesday #Marblemania #AlgorithmicArt #GenerativeArt #Art #Marbling #Animation #ThingUmbrella

@eniko @TomF @Moosader If you want to go even more meta, here's the repo for a workshop I ran with design students at Augsburg uni a few years ago to build a TIC-80 inspired fantasy console ourselves:

https://github.com/thi-ng/fantasy-console/

Written in TypeScript, includes custom DSL, runs in the browser, includes six demos (incl. bitmap font editor). More details in readme

#FantasyConsole #Workshop #ThingUmbrella #TypeScript #TIC80 #RetroComputing #BitmapFont

Just installed the latest Zig master branch to check how much breakage (if any) the upcoming v0.17.0 release will cause in https://thi.ng/umbrella. Happy to report that it's only very few minor syntax changes:

  • std.fmt.bufPrintZ() => std.fmt.bufPrintSentinel() (w/ manually specified sentinel)
  • std.mem.Allocator.dupeZ() => std.mem.Allocator.dupeSentinel()
  • @Type(.EnumLiteral) => @EnumLiteral() (dynamic type creation)

So far so good! ๐Ÿคฉ

#Zig #ThingUmbrella

thi.ng/umbrella

thi.ng/umbrella

#ReleaseDay The new version of https://thi.ng/geom-sdf is automatically preprocessing the vertices given for 2D polygons & polylines to remove any coincident and colinear ones (using Douglas-Peucker algorithm). This avoids some degenerate cases, but can also speed up the SDF evaluation of converted shapes in some other cases...

Thanks to @made for reporting the issue! ๐Ÿ™

(To clarify: This package is for converting 2D shapes/geometries/SVG to composable SDF JavaScript/TypeScript functions, not for shader-based SDF use cases. For the latter, the https://thi.ng/shader-ast-stdlib package provides similar SDF functions/operators, for use with https://thi.ng/shader-ast and transpilation to GLSL)

Some examples:

thi.ng logo as SDF:
https://demo.thi.ng/umbrella/geom-sdf-logo/

SVG smiley deformation:
https://demo.thi.ng/umbrella/geom-sdf-path/

#ThingUmbrella #SDF #SVG #Geometry #Shapes #TypeScript #JavaScript

2D Signed Distance Field creation from @thi.ng/geom shapes, conversions, sampling, combinators

thi.ng/geom-sdf

Recently, at the library...

"Have you got their new book 'Silk switch system problem'?"
"No. Is that the sequel to 'Equiconnected nanosky oasis'?"
"What's that?"
"Oh, you've never read the 'Magnetic haze cycle' series? That's just too bad. It's full of cool ideas like the ultra-iridescent opcode sentinel, infraconnected division boundary, or even beige frontier mirror..."
"Dude!"
"Yeah, it's real porcelain ultra-peak! Absolutely life changing epoch omnicurve vision!"
"I did like 'Supraviolet ring department'..."
"Well, in that case, I'd recommend 'Macroluminous shimmer facet' instead. It's a good intro to all the abundant assembly craft."

In preparation for some name/passphrase generator and LLM-poisoning projects/tools, I updated my online procedural text editor to be able to export generator specs/recipes directly as TypeScript source code for easy integration into your own projects...

The above generator is here (the entire recipe is part of this super long URL):

https://demo.thi.ng/umbrella/procedural-text/#W25vdW5dCmFtYWxnYW0KYXJlYQphc3NlbWJseQpiYW5kCmJlYWNoCmJsYXN0CmJvdW5kYXJ5CmJ1cmVhdQpjYW1wCmNhbnlvbgpjYXJ0ZWxsCmNhc3RsZQpjaGFzbQpjaXR5CmNsb3VkCmNvYXN0CmNvZGUKY29tcGxleApjb21wb3NpdGlvbgpjb25zdHJhaW50CmNvbnN0cnVjdApjb3JuZXIKY291bnRyeQpjb3ZlcgpjcmFmdApjcnlzdGFsCmN1cnZlCmN5Y2xlCmRhdGEKZGF3bgpkZWx1c2lvbgpkZW5zaXR5CmRlcGFydG1lbnQKZGVyaXZhdGl2ZQpkZXNlcnQKZGlzYwpkaXZpc2lvbgpkb21haW4KZHJpdmUKZHVzawplZGdlCmVsaXhpcgplbXBpcmUKZXBvY2gKZXJhCmVzY2FwZQpleGNoYW5nZQpmYWNldApmYWxsCmZhbnRhc3kKZmFybQpmZWFyCmZpY3Rpb24KZmlzc3VyZQpmb2FtCmZvY3VzCmZvcmVzdApmb3JtCmZvcnRyZXNzCmZyYWN0dXJlCmZyZXF1ZW5jeQpmcm9udGllcgpnZW5lc2lzCmdsYXNzCmdsb3cKZ3JhcGgKZ3JvdW5kCmdyb3VwCmhhemUKaGVhZAppc2xhbmQKaXNsZQpqb3VybmV5CmxhbmQKbGFrZQpsYXJrCmxlYXAKbGluZQpsaW5hZ2UKbG9jYXRvcgpsb2NhdGlvbgpsb29wCm1ldGhvZAptaXJyb3IKbW9kdWxlCm1vdW50YWluCm5lYnVsYQpuZW1lc2lzCm5ldApuZXR3b3JrCm9hc2lzCm9ibGl2aW9uCm9ic2lkaWFuCm9jZWFuCm9keXNzZXkKb3Bjb2RlCm9wZXJhdGlvbgpwZWFrCnBoYXNlCnBpdGNoCnBsYW5ldApwbGF0ZWF1CnBsb3QKcG9zaXRpb24KcG90aW9uCnBvd2VyCnByb2JsZW0KcHJvdGVjdGlvbgpxdWFkcmFudApxdWVzdApyYWRpdXMKcmFpbgpyYW5nZQpyZWFsbQpyZWdpb24KcmVsYXRpdml0eQpyZXBhaXIKcmlmdApyaW5nCnJpdmVyCnJvYWQKcm9ja2V0CnNjaWVuY2UKc2VhCnNlbnRpbmVsCnNldHVwCnNoaW1tZXIKc2lsawpzaXRlCnNreQpzb25nCnNwYWNlCnN0YXRlCnN0b3JtCnN0b3J5CnN1YnN0aXR1dGUKc3Vydml2YWwKc3dhbXAKc3dlbGwKc3dpdGNoCnN5bWJpb3NpcwpzeXN0ZW0KdGVuZGVuY3kKdGVhbQp0aW1lCnRoZW9yeQp0cmFuc2Zlcgp0cmF1bWEKdmFsbGV5CnZhcG9yCnZpc2lvbgp3YWxsCndhc3RlCndlbGwKem9uZQoKW2NvbG9yXQphenVyZQpiZWlnZQpibGFjawpicm9uemUKY3lhbgplbWVyYWxkCmdvbGQKaXJpZGVzY2VudApuYXZ5Cm5vaXIKcGxhdGludW0KcHVycGxlCnRyYW5zbHVjZW50CnZpb2xldAoKW2FkamVjdGl2ZV0KPGNvbG9yPgphYnVuZGFudAphbGllbgphc2NldGljCmF0b21pYwpiYXJvcXVlCmJhc2ljCmJvcmVhbApicmlsbGlhbnQKY29sZApjb25uZWN0ZWQKY3JpdGljYWwKZGFyawpkZWVwCmRyeQplbWluZW50CmV4dGFudApmZXJhbApmbGF0CmZsb29kCmZyYWdpbGUKZnJvbnRhbApmcm96ZW4KZnJ1Z2FsCmhhcmRlbmVkCmhpZGRlbgpob3QKaHlwbm90aWMKaW52aXNpYmxlCmx1bWlub3VzCmx1bmFyCm1hZ25ldGljCm1pbmltYWwKbWlycm9yCm15c3RpYwpudWNsZWFyCm5ldXJhbApvcmdhbmljCnBvcmNlbGFpbgpwcm92aW5nCnJhZGlhbnQKcmFkaWNhbApyYXBpZApyYXJlCnJlbW90ZQpyb3VnaApydWdnZWQKc29mdApzb2xhcgpzb25pYwpzcGVjdGFjdWxhcgpzcGVjdHJhbApzeW1tZXRyaWMKdGhlcm1hbAp0aW1lc3RyZXRjaGVkCnVyYmFuCnZpc3VhbAp3ZXQKd2lsZAoKW2NvbG9ycHJlZml4XQpleHRyYQpoeXBlcgpoeXBvCmluZnJhCnN1YgpzdXBlcgpzdXByYQp1bHRyYS0KCltwcmVmaXhdCjxjb2xvcnByZWZpeD4KY28KZGUKZXF1aQptYWNybwptZXRhCm1pY3JvCm5hbm8Kb3J0aG8Kb21uaQpwb3N0LQpwcmUtCgpbcGhyYXNlXQo8bm91bj4gPG5vdW4+Cjxub3VuPiA8bm91bj4gPG5vdW4+Cjxub3VuPiA8cHJlZml4Pjxub3VuPgo8bm91bj4gPHByZWZpeD48bm91bj4gPG5vdW4+Cjxjb2xvcnByZWZpeD48Y29sb3I+IDxub3VuPgo8Y29sb3JwcmVmaXg+PGNvbG9yPiA8bm91bj4gPG5vdW4+Cjxjb2xvcj4gPHByZWZpeD48bm91bj4KPGNvbG9yPiA8cHJlZml4Pjxub3VuPiA8bm91bj4KPGNvbG9yPiA8YWRqZWN0aXZlPiA8bm91bj4KPGFkamVjdGl2ZT4gPG5vdW4+CjxwcmVmaXg+PGFkamVjdGl2ZT4gPG5vdW4+CjxwcmVmaXg+PGFkamVjdGl2ZT4gPG5vdW4+IDxub3VuPgo8cHJlZml4PjxhZGplY3RpdmU+IDxwcmVmaXg+PG5vdW4+IDxub3VuPgo8YWRqZWN0aXZlPiA8cHJlZml4Pjxub3VuPgo8YWRqZWN0aXZlPiA8bm91bj4gPG5vdW4+CjxhZGplY3RpdmU+IDxjb2xvcj4gPG5vdW4+CjxwaHJhc2U+IDxub3VuPgoKW3RpdGxlXQonPHBocmFzZTtjYXA+JwoKIyBtYWluCgoiSGF2ZSB5b3UgZ290IHRoZWlyIG5ldyBib29rIDx0aXRsZT4/IgoiTGV0IG1lIGNoZWNrLiBJcyB0aGF0IHRoZSBzZXF1ZWwgdG8gPHRpdGxlPj8iCiJXaGF0J3MgdGhhdD8iCiJPaCwgeW91J3ZlIG5ldmVyIHJlYWQgdGhlIDx0aXRsZT4gc2VyaWVzPyBUaGF0J3MganVzdCB0b28gYmFkLiBJdCdzIGZ1bGwgb2YgY29vbCBpZGVhcyBsaWtlIHRoZSA8cGhyYXNlPiwgPHBocmFzZT4sIG9yIGV2ZW4gPHBocmFzZT4uLi4iCiJEdWRlISIKIlllYWgsIGl0J3MgcmVhbCA8cGhyYXNlPiEgQWJzb2x1dGVseSBsaWZlIGNoYW5naW5nIDxwaHJhc2U+ISIKIkkgZGlkIGxpa2UgPHRpdGxlPi4uLiIKIldlbGwsIGluIHRoYXQgY2FzZSwgSSdkIHJlY29tbWVuZCA8dGl0bGU+IGluc3RlYWQuIEl0J3MgYSBnb29kIGludHJvIHRvIGFsbCB0aGUgPHBocmFzZT4uIg==

More project & syntax info here:
https://thi.ng/proctext

#Microfiction #ProcGen #ProceduralText #ThingUmbrella #DSL #TypeScript #LLMPoisoning #NoAI

Color Therapy. Noisy evolution.

Two snapshots of my piece C-SCAPE, 2022, a multi-organism 1.5D cellular automata simulation. Patterns of symbiosis and annihilation.

Made with https://thi.ng/cellular

#CSCAPE #CellularAutomata #GenerativeArt #AlgorithmicArt #EvolutionaryArt #Abstract #Color #Texture #ThingUmbrella #NoAI

PSA: Not that it was ambiguous beforehand, but these are times for stating things more clearly...

All #ThingUmbrella package readme files are now clearly stating that these projects are "LLM-free, human-made and cared for software, maintained as part of the https://thi.ng/umbrella ecosystem and anti-framework" ๐Ÿซก

I cared for and tended this garden of hundreds of projects almost daily for close to 10 years[1] (even if the commit heatmap doesn't always show it). It's a testament to the things I've learned, built, explored and tried to share with the world, things which helped numerous people and companies (big & small) to realize their unique projects/products/services. I'm not gonna sacrifice this body of work and all this cohesion by watering/poisoning it with slopicides[2] and/or making it dependent on the great planetary token machine...

In The Handmaid's Tale, I always found the moment about "freedom from" vs "freedom to" very poignant, albeit in a different/inverted sense to how it was used there: Traditionally, Open Source licenses have granted freedoms "to" certain things, especially unconstrained uses. But if licenses still have any meaning at all (highly debatable in this climate/age), we increasingly need alternative licenses/mechanisms to also grant our creations freedoms "from" certain uses/practices/people/orgs...

[1] ...only the TypeScript/Umbrella parts counted here. Many other thi.ng projects are much older...
[2] Have I just coined a new word?!

#ThingUmbrella #OpenSource #NoAI

thi.ng/umbrella

thi.ng/umbrella