toad.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mastodon server operated by David Troy, a tech pioneer and investigative journalist addressing threats to democracy. Thoughtful participation and discussion welcome.

Administered by:

Server stats:

292
active users

#thingumbrella

0 posts0 participants0 posts today

#ReleaseWednesday — Extracted & extended the LISP-like DSL from an existing #ThingUmbrella example[1] as new small package for better/direct re-use in other projects:

thi.ng/lispy

The core language is kept intentionally minimal, aimed at simple sandboxed data transformations/derivations, small code snippets/expressions in GUIs or config settings. However, the language is very easy to extend/customize with new functions or control flow constructs etc. Currently, the language is interpreted and has the following builtins (see screenshots). There's no macro support so far (and not sure if that's even desired here)...

[1] The original #HowToThing example browser REPL this was extracted from (and which has now been updated to use the new package):

demo.thi.ng/umbrella/lispy-rep

#ThingUmbrella #Lisp #DSL #FunctionalProgramming #REPL

More #Actiniaria progress: Added a soft global constraint to create more of a (macro)organism feel w/ a sense of belonging and fuzzy boundary. Also slowly updating the behavior/relationship matrix between the six different types now, to create varying temporary alliances...

(Note: Sadly Firefox doesn't respect the Rec2020 color profile in the video, please download or use Chrome or Safari for viewing...)

#ReleaseSaturday — Just added 35 new color palettes (255 in total now) to thi.ng/color-palettes. All of these are based on images and dominant colors have been extracted via this tool below and then partially hand edited. The SVG swatches were generated via a custom tool (included in the project repo).

The package provides accessors for obtaining themes as CSS hex colors, RGB or LCH tuples. Themes can also be programmatically selected/filtered by a number of composable criteria (examples in the readme)...

demo.thi.ng/umbrella/dominant-

Found some time last night to implement multi-behaviors and I'm very excited about where this is going... 😍 The video shows 6 different types interacting with (and avoiding) each other. Next step is to vary the behavior matrix over time, causing changing alliances and breakup behaviors...

See #Actiniaria for more context...

(Note: Sadly Firefox doesn't respect the Rec2020 color profile in the video, please download or use Chrome or Safari for viewing...)

#ReleaseFriday — Just pushed a new version of thi.ng/tensors, now with added support for "broadcasting" in most operations taking more than one input tensor. This means the shapes of the tensors only need to be compatible, not identical. Supporting operators attempt to adjust each tensor's shape & stride configurations to be compatible (details in the readme & API docs).

This new version also includes more tensor ops (almost 50 now), including singular value matrix decomposition (SVD), plus improved type safety & result type interference for all operations. The readme contains more code examples...

Happy coding! :)

#ReleaseWednesday 🚀 — I wonder how many other FLOSS devs are sitting on code for ~8 years prior to first release... In one of these cases (many others readily available in my stash 🙃), triggered by recent major updates to the thi.ng/vectors library, I've refactored (almost 100% rewritten) and applied the same approach to the new/old package:

thi.ng/tensors

This package provides 1D/2D/3D/4D tensors, supporting different storage implementations (currently still all CPU side only) and an extensible set of polymorphic tensor operations (currently ~45 math ops, incl. matrix-matrix/matrix-vector products, reductions, argmin/max, activation functions etc.). The tensor classes themselves also provide several zero-copy slicing, re-ordering, clipping, extraction functions, most of them type-safe.

The original (private) version was heavily reliant on dynamic code generation, which has now been replaced with higher-order functions to provide various dimension-optimized versions of all operations.

This package is NOT specifically aimed at machine learning, even though it could probably used for some tasks in that realm (likely with extra hand holding). There are many other use cases for this kind of data structure...

Also new in other packages in this release cycle (incl. some code examples):

- docs.thi.ng/umbrella/arrays/fu
- docs.thi.ng/umbrella/bidir-ind
- docs.thi.ng/umbrella/transduce

thi.ng/tensors1D/2D/3D tensors with extensible polymorphic operations and customizable storage
Replied in thread

@akkartik @ashley @datarama I'm not fully sure which magic constants you're referring to, but the ones used in this example[1] come from fine tuning the desired behavior and tweaking the balance of the main three different force contributions (separation, alignment, cohesion). Sure, you can give them all equal weighting, but you can achieve so many more varied & interesting behaviors by simply playing with these force multipliers (and throwing other constraints/forces into the mix). In the thi.ng/boids implementation these forces are customizable per boid (e.g. to create groups of different species/behaviors) and can also be modulated spatially (based on current position and a possibly underlying data layer/map). That way I can dynamically force different behaviors based on where an agent is in the simulation space/time. The combination of all these provides incredible freedom and allows me use boids in situations you wouldn't normally associate with the cliché flocking behaviors...

ICYMI (related), check out my more recent boids explorations here:
mastodon.thi.ng/@toxi/tagged/A

[1] github.com/thi-ng/umbrella/blo

thi.ng/boidsn-dimensional boids simulation with modular behavior system

Today it's already 3 weeks since the opening of "The Story Never Ends" exhibition at ZKM Karlsruhe, showcasing around 100 works by 75 artists from the museum's collection of 12,000 artworks, one of the largest and most important media art collections in the world (since the 1950s).

Due to the stress of the recent weeks, I've completely missed posting more pictures of my piece on display there (De/Frag, 2021). It's a custom site-specific version which will keep changing/evolving non-stop for the next 5 months (until the end of the show in late September). The pictures attached are by Clara Runge, the curator of the show. Thank you! 🙏🤩

zkm.de/en/2025/04/the-story-th

A plea: If you happen to go to ZKM and get to see the piece, please do take & post some pictures — I'm very keen to see snapshots over time (so far I've only had it running for a few weeks, but never for months on end...)

More info about the piece and images also here in this thread:
mastodon.thi.ng/@toxi/11424504

Similar to my #LinearMemory piece from last year (check the hashtag for references), these current #Actiniaria explorations make me fully appreciate all the research, efforts and supporting hardware behind the DCI-P3 & Rec.2020 color spaces. The intensity (and subtlety) of some colors & combinations are just stunning (to me), and I don't mean this in any ableist way (just enjoying whilst I still can!)...

Also still amazed that something like this runs at a smooth 60fps @ 2160x2160 UHD resolution on a mobile device with a just Snapdragon 2 chipset... As part of my advisory role @ day job, over the past few months I've been tasked with optimizing artworks for almost a dozen generative/algorithmic artists, often achieving 2-4x framerate improvements... Very much feeling a longer blog post re: code craft vs code art coming up, hoping to connect them more...

"To understand a program you must become both the machine and the program." — Alan Perlis

(Note: Sadly Firefox does not seem to respect the Rec2020 color profile in the video, please download or use Chrome or Safari for viewing...)

Replied in thread

@vga256 @tomjennings Yes, wabi-sabi has also been very influential on my own practice and was one of the conceptual hooks for this talk I gave at Resonate Belgrade in 2016, which incidentally also includes a great quote by @vertigo):

media.thi.ng/2016/talks/resona
(sorry, slides only, no talk notes)

Re: The feeling "should have written myself" — that's exactly how I feel about your framing/writing! :))

Tomodashi's (@vga256) design philosophy so much resonates with my own, even if my reality/interests and having roots in different social & technological environments/communities sometimes still causes friction/confusion/dilution of principles — it's all a process, an ongoing dismantling & rebuilding, and the path has become more clear over the past 5-10 years... thi.ng plays a major part (and stepping stones) for me in that context and very much shares the same principles laid out further below.

tomodashi.com/philosophy

"The sub-Arctic regions of the Canadian Northwest Territories have many communities of fishers, hunters and trappers who live off the land with simple and effective tools. When technology breaks down in the north, there isn't a tech support number to call, or dealership or mechanic to take it to. You're on your own.

This encourages you to care for your tools, and make repairs using whatever knowledge and resources you have on hand. People who live on the land only take with them what they can maintain, upgrade and repair themselves. Big, complex, fragile, expensive, high-performance, high-maintenance stuff is left at drydock.

The elders of the far north teach us that these human-sized and human-shaped tools are extensions of who we are. To care for one's tools is to care for one's community, and oneself. These are not separate things.

That is the key to the Tomodashi design philosophy.

Principles

All Tomodashi software is crafted with these four related ideas in mind:

1. Human-sized things are friendlier, more economical, and easier to learn.
2. The user is both a creator of things and a playful being.
3. Let people personalize, modify, and repair their toys and tools.
4. Imperfect creations feel more human, serene and beautiful.

When human qualities and self-expression become the focus of software engineering - whether it's a game or a programming tool or an IDE - all other arguments about programming and software design become moot"

❤️❤️❤️

Work in progress...

Finally finding some time to continue working on my earlier thi.ng/boids experiments, now also using WebGL instancing and floating point render textures for super-smooth blending/trails to create aesthetics reminiscent of sea anemones...

(Update: I've decided on the beautiful-sounding and fitting #Actiniaria as project title...)

(Note: Sadly Firefox does not seem to respect the Rec2020 color profile in the video, please use Chrome or Safari for viewing...)

#ReleaseWednesday — I just released a new version (v8.0.0) of thi.ng/vectors, an almost complete rewrite of the package with all of its ~900 vector operations. I've updated the Readme with a section of _potentially_ minor breaking changes, however I expect this to be a seamless upgrade for the vast majority of users...

I've recently written more about the reasons and implications of this update and I'll refer you to those posts instead of repeating them once more (see links below).

Just the top-level changes:

- Replaced dynamic code generation with higher-order templating to be usable with strict content security policies (when deployed online)
- New structure allows for vast majority of functions to have doc strings (and they do now)
- More consistent/less confusing naming for some operations
- Potentially improved tree-shaking and smaller project bundle sizes

Related to this update I've also refactored and fixed some bugs in other packages (e.g. color, geom, matrices). As a result both the color & matrix packages are now also free from dynamic codegen and therefore won't cause any problems with strict CSPs

Should you run into any issues regarding this update, please get in touch (also grateful for any other experience/impact reports... 🙏)

More info in these recent posts/threads:

- mastodon.thi.ng/@toxi/11429644
- mastodon.thi.ng/@toxi/11431965
- mastodon.thi.ng/@toxi/11433601

Happy coding!

thi.ng/vectorsOptimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts