shakedown.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A community for live music fans with roots in the jam scene. Shakedown Social is run by a team of volunteers (led by @clifff and @sethadam1) and funded by donations.

Administered by:

Server stats:

292
active users

#reactive

0 posts0 participants0 posts today

We live with a TV watching #reactive #AustralianShepherd that flips out at the sight of dogs, cats, horses, water and things that approximate (think cartoons). Starts barking and inward sneezing and just generally fritzing out.

Haven’t had a dog drama-free evening in forever. TV shows, movies, advertisements seem to *always* have something.

Now I have a Pavlovian reflex too.

It’s tiring.

Another day, another longish user support answer... 😊 This time a little deep dive into potential pitfalls and solutions related to the recursive teardown behavior of thi.ng/rstream reactive subscription pipelines/graphs/topologies. Esp. for UI use cases, these are important aspects to be aware of...

github.com/thi-ng/umbrella/iss

thi.ng/rstreamReactive streams & subscription primitives for constructing dataflow graphs / pipelines

New #ThingUmbrella example (#172): Interactive visualization of low-discrepancy samples using thi.ng/viz, thi.ng/hiccup-svg, thi.ng/lowdisc, thi.ng/rdom & thi.ng/rdom-forms

The example also demonstrates combining multiple plots and uses lens axes with adjustable non-linear mapping using focal points and dilation...

Demo:
demo.thi.ng/umbrella/viz-scatt

Commented source code:
github.com/thi-ng/umbrella/blo

Trying to debug a user's issue, I ended up creating a new, small & barebones #ThingUmbrella example, showing a basic usage pattern combining:

- thi.ng/atom for app state
- thi.ng/router for URL routing/validation
- thi.ng/rdom for reactive, vdom-less UI components

Demo:
demo.thi.ng/umbrella/rdom-rout

Source:
github.com/thi-ng/umbrella/blo

#Reactive#UI#Router

#ThingUmbrella #ReleaseFriday[1] 🚀 — As announced a couple of weeks ago, a lot of my recent work has been centered around async iterables and addressing the conceptual overlap between the various packages related to those, specifically: thi.ng/transducers-async, thi.ng/rstream, thi.ng/csp, thi.ng/fibers, and partially related, thi.ng/rdom too. Apart from the first package, until recently, none of the others had direct support for async iterables (largely for historic reasons), but they all offer similar operators & functionality (via different means), which I'm slowly consolidating where it makes sense...

Part of this pretty large undertaking has been a complete rewrite of the temporarily deprecated thi.ng/csp package for Communicating Sequential Processes[2] (IMHO one of the most elegant & sane ways to structure larger apps via multiple small, reasonable concurrent processes). The package is active again now (as v3+) albeit constituting a new API (new docs still WIP) and removing any direct transducer-related functionality — this is one aspect of the aforementioned consolidation and now simply assumed to be delegated to the thi.ng/transducers-async and/or non-async thi.ng/transducers packages. I've also included a new small example project showing mixed usage patterns of working with CSP channels and combining them with (async) transducers to create derived views:

Demo:
demo.thi.ng/umbrella/csp-bus/

Source:
github.com/thi-ng/umbrella/blo

Hand in hand with these major changes are smaller and still ongoing updates to thi.ng/rdom, which recently received partial support for embedded async iterables as reactive values inside a UI/DOM component tree. The goal for this package is to become fully decoupled from thi.ng/rstream and focus more on the equally powerful, but more lightweight (since part of the language) async iterables. Adapters from rstream → asynciter already exists (see docs).

Unrelated, but also part of this week's release: The new version of thi.ng/meta-css includes support for CSS `light-dark()`. The base framework now includes ~950 utilities & 70 functions. See readme for full list...

Happy coding! :)

[1] There're actually a lot more frequent release, but these days I'm only mentioning the more notable ones to not spam everyone...

[2] en.wikipedia.org/wiki/Communic

thi.ngAsync versions of various highly composable transducers, reducers and iterators

🚀 #ThingUmbrella #ReleaseMonday with new, just released functionality:

The parameter tweening/animation package thi.ng/ramp has received a major update (v3.0.0) and now supports:

- interpolation of arbitrary & nested types (numeric, nD vector values and nested objects of the same are supported out-of-the-box, extensible)
- grouped/nestable ramp/timeline channels, with each channel having its own independent set of keyframes, interpolation type & options
- per-channel time domain mapping functions (e.g. for clamping, looping, speed adjustments, direction etc.)

Incredibly complex animations can be achieved with these features (and the fact it's all declarative and supports dynamic/procedural generation of keyframes & timelines). I shall write more about this in due course...

For now, here's a small (purposefully underwhelming, basic(!)) demo, showing some of these concepts in action, using the vertical scroll position to drive (reactively) various CSS properties. A few more smaller examples are also in the package readme...

Btw. This package has ZERO relationship with HTML/CSS and can be useful in any other usage scenarios, from WebGL to any other parameter tweening tasks...

The attached image shows the commented demo source code.

Demo:
demo.thi.ng/umbrella/ramp-scro

Source code:
github.com/thi-ng/umbrella/blo

New #ThingUmbrella releases & example: This week's releases included updates to thi.ng/system, a minimal and declarative way to compose an app from multiple components, build their dependency graph and manage their lifecycle (async start/stop) in the correct (topological) order. The computed graph (DAG) can then also be serialized to GraphViz format for visualization/debugging/documentation purposes with a single line of code (see readme)...

Even though I've been using this system in dozens of projects, it occurred to me there wasn't any example project yet demonstrating this approach, so I finally fixed that:

github.com/thi-ng/umbrella/tre

The demo is purposefully minimal and the source code is (hopefully) much more interesting than the result. In addition to showing how the app components are defined, this example also shows another powerful pattern I've been using in my own tools:

Using thi.ng/atom as central app state and thi.ng/rstream pubsub as central event bus, to both of which various system components can attach topic based subscriptions (aka event and/or change handlers). Since each of these reactive subscriptions are normal rstream subs, they can all be forming graphs of child subs and be filtered/transformed and synchronized via hundreds of composable operators in the thi.ng/rstream and thi.ng/transducers packages — and — these rstream values can also be directly embedded in thi.ng/rdom created reactive UI components/elements/attributes. Some of these techniques are shown in this new example as well... Hope it's helpful to some of you!

#LongRead #ThingNews 01/2024

Yesterday was #ThingUmbrella #ReleaseFriday (2nd round this year), incl. updates & additions to these new/recent packages (in A-Z order):

thi.ng/blurhash — A fast implementation of the blurhash algorithm to create extremely compact (usually just 10-40 characters) blurred previews of images. Includes both encoder/decoder. A CLI wrapper is forthcoming. I also created an interactive online generator as new example project, allowing you to import own images & play with params:

demo.thi.ng/umbrella/blurhash/
---

thi.ng/boids — Finished updates to the composable behavior architecture. Included 7 behavior building blocks (all short, simple functions) which can be freely mixed/assigned to agents to create complex behaviors. All agents are individually configurable. Behaviors are weighted and dynamically adjustable, e.g. to vary spatially or temporally, based on external stimuli etc.

Updated example project using the new API:
github.com/thi-ng/umbrella/tre

Many more examples of what can be done with this package (my tagged posts w/ #Boids): mastodon.thi.ng/@toxi/tagged/B
---

thi.ng/canvas - Result of recent restructuring/cleaning/consolidating, this new small package contains helpers for canvas creation and HDPI adjustments. Features merged from thi.ng/adapt-dpi (now deprecated), thi.ng/pixel and others...
---

thi.ng/meta-css — New CLI toolchain for creating, using and bundling custom CSS utility-class-based frameworks (similar to Tachyons, Tailwind etc.)

Differentiating factors: Uses generative & parametric grammar to define modular CSS frameworks, resulting in 100s of CSS classes (~950 are included as starting point). CSS purely used as output format. Custom stylesheet syntax to concisely assemble styles (incl. selector nesting) from the generated classes & declarations. Supports definition of arbitrary media queries, whose IDs can be used as compound prefixes to apply referenced CSS classes responsively. Supports file watching, bundling of multiple stylesheets, automatic tree-shaking. Only referenced classes & media queries are transpiled to CSS, supports pretty printing, forced includes and plain CSS includes. Extremely small & fast (33KB, incl. dependencies).

Extensive readme (3k+ words) included. Based on thi.ng/hiccup-css, much of this has been existing in loose form as partial tooling/experiments since 2016. Over the past 2 months I finally took the plunge to actually make this fully usable and been refining the overall workflow & features.

(Personally, this works _really_ well for me and offers the best of both worlds, i.e. using utility classes for concision, but not leading to clutter in component code, better separation & maintainability)

Several recently added examples are already using (or have been updated) to this toolchain (see pkg readme for a growing list). There're also new related build instructions in the wiki (linked from each example's readme)
---

thi.ng/rdom — Updated many function signatures to support usage in Web Components (Shadow DOM). Added lazy loading component wrapper. Removed experimental scheduler. I never really used it and the general issue is much better solved outside, e.g. using available synchronization constructs in thi.ng/rstream.

Added a new super basic usage example (rdom & meta-css):
github.com/thi-ng/umbrella/tre
---

thi.ng/rdom-forms — Data-driven declarative HTML form/controls based around thi.ng/hiccup-html & thi.ng/rdom. The widgets are unstyled by default, but highly customizable. In addition to being aimed at rdom (for using reactive values & other attribs), it's also suitable for static HTML-generation or SSR purposes.
---

More recent updates:
github.com/thi-ng/umbrella/blo

I struggle to find the benefits of #Spring #R2DBC. It's a full rewrite of #JDBC API using non-blocking I/O. However, typical application shouldn't open more than a handful of DB connections. So, just a few threads blocked on I/O (plus some threads queued up) shouldn't be an issue. Unless you want to be purely reactive or you are connecting to massively scalable database. But in that case, virtual threads come in handy. So what's the point? #Java #reactive

#HowToThing #023 — Responsive & reactive image gallery with tag-based Jaccard similarity ranking/filtering using thi.ng/bitfield, thi.ng/rstream & thi.ng/rdom

A quite common comment about #ThingUmbrella is that people often have little idea what some of the ~185 packages are even good/intended for and/or how to synthesize solutions from these small, individual building blocks. IMHO this is less about these packages themselves and more down to existing blank spots about the underlying concepts, algorithms and their potential role/utility in a larger problem domain... So I very much hope this new example is also useful in this respect!

Alas, the full code for this got pretty long and contains a lot more UI stuff. I'm intending to develop this further for the new homepage to browse all ~135 #ThingUmbrella examples (and maybe even for parts of the thi.ng website itself)... For those of you interested in more "advanced" thi.ng/rdom examples, do check it out!

Background info:
en.wikipedia.org/wiki/Jaccard_

Demo:
demo.thi.ng/umbrella/related-i

Full source code:
github.com/thi-ng/umbrella/tre

The important parts re: using compact binary encoding, bitfields & Jaccard similarity to find related items are here:

github.com/thi-ng/umbrella/blo

#HowToThing #016 — Building a small (and very incomplete!) Mastodon UI with #ThingUmbrella. Still, the following features are included so far and demonstrate:

- Looking up Mastodon account details & loading public messages for any given username
- Transforming JSON payloads with thi.ng/transducers
- HTML parsing, cleaning & rewriting via thi.ng/parse
- Reactive UI components via thi.ng/rstream & thi.ng/rdom
- Polymorphic (multiple-dispatch) functions via thi.ng/defmulti

UI features:

- Account details w/ header image, avatar, bio
- Media previews for images, gifv, videos
- Fullscreen modal overlay for images & alt text
- UI design heavily inspired by the amazing @phanpy (😍)

Alas, the code for this new example (#131) is too long & too split up for showing here in this format, but it's well documented and you can find it all linked below...

Demo:
demo.thi.ng/umbrella/mastodon-

Source:
github.com/thi-ng/umbrella/tre

I hope this (and other parts) of this ongoing #HowToThing series are interesting to you. If so, please consider boosting and/or supporting my #OpenSource work via GitHub or Patreon. Thank you very much in advance!

github.com/sponsors/postspecta
patreon.com/thing_umbrella

#HowToThing #014 — Building a simple browser REPL UI for yesterday's Lispy S-expression mini language[1], using thi.ng/rdom and other usual suspects like thi.ng/rstream & thi.ng/transducers.

The language impl itself now also has local let-bindings, some more error checking, introspection and more examples of built-in functions...

Demo:
demo.thi.ng/umbrella/lispy-rep

Source code:
github.com/thi-ng/umbrella/blo

(The attached source code image only shows the UI/REPL parts, the language implementation can be found in the above link...)

#ThingUmbrella #TypeScript #JavaScript #Lisp #FunctionalProgramming #Reactive #UI #REPL #DSL

[1] See yesterday's toot about building/using a mini DSL:
mastodon.thi.ng/@toxi/11100634

So, my #introduction or #intro or whatever -

I'm a married twenty-something living in the #UK, originally from #Australia. I work in #TV in #ProductionManagement, so focus a lot on #productivity systems and #automation - #todoist is my daily driver.

Interested in #urbanism and #transit for a more connected, sustainable world. Getting back into #gaming with my new #SteamDeck. Owner of a #reactive #RescueDog. Big #foodie. Amateur #writer and #archivist, growing #datahoarder due to slight paranoia about the shakiness of our digital world (#RIPTwitter didn't help).

Still not sure where I belong yet on Mastodon, but so far I'm loving not having my feed dictated by an algorithm. It feels cool, like how the internet used to be. Enjoying the ride! :blobcatdance:

Hello #fediverse here's my #introduction : My name is Koko. I'm a 2 year old #BorderCollie cross #AustralianKelpie

I was a pandemic pup, so I didn't get the socialisation I needed. This means that I can be #reactive towards cars and other dogs.

Luckily for me, the #DogsTrust helped me find the best Mum and Dad who are doing everything possible to help me become calmer and more optimistic. They already tell me I'm the goodest boy 🐶