#ReleaseTuesday — Earlier today, I published https://thi.ng/arcball, a small new package providing an intuitive click & drag 3D camera view controller which is completely agnostic from any UI/drawing/rendering framework. The library simply provides the (quaternion) maths to translate gesture events into rotations and then computes a view matrix (presumably for WebGL/WebGPU).

The code is ported from the old 2016 Clojure implementation in https://thi.ng/geom-clj, which itself is based on a 1992 paper (link in readme). Behind the scenes it uses https://thi.ng/matrices and https://thi.ng/vectors for various math ops.

There's also a small new example project to show how to use it (mouse & touch events are enabled, but zooming only works via scroll gestures on touchpad or mousewheel):

https://demo.thi.ng/umbrella/webgl-arcball/

#ThingUmbrella #TypeScript #JavaScript #UI

3D arcball controller for intuitive click & drag gesture-based camera view rotations. Quaternion-based.

thi.ng/arcball

#ReleaseTuesday — New version of https://thi.ng/tsne with ~15-20% better performance[1] due to avoiding repeated internal allocations and skipping gradient updates where unnecessary...

[1] Benchmarked with multiple datasets of ~750 items, each with 192 dimensions (now ~165ms @ MBA M1, 2020)...

#ThingUmbrella #TSNE #DataViz #Visualization #ML #Cluster #TypeScript #JavaScript

Highly configurable t-SNE implementation for arbitrary dimensions

thi.ng/tsne

#ThingUmbrella #ReleaseTuesday... New package (initial alpha release):

https://thi.ng/block-fs provides highly customizable & extensible block-based storage with an optional hierarchical filesystem layer. This is useful everywhere you might need virtual filesystem, though the storage providers can also be used without the filesystem layer (e.g. for #Forth-style block data/editors).

The default configuration provides:

- arbitrarily nested directories
- filenames (UTF-8) of max. 31 bytes per directory level
- max. 32 owner IDs
- file locking
- creation/modification timestamps (64 bit)
- efficient append writes

Currently included storage providers: TypedArray-based in-memory and host filesystem based file storage (one block per file). More are planned (e.g. IndexedDB, remote endpoint)...

The readme is currently still lacking various diagrams to illustrate the filesystem internals. I will add those ASAP...

#ThingUmbrella #FileSystem #VirtualFS #BlockStorage

Customizable block-based storage, adapters & file system layer

thi.ng/block-fs

Several rounds of updates later over the past few days (also in part thanks to some of the feedback received — thank you!), a new version of the thi.ng browser tool is up:

https://demo.thi.ng/umbrella/thing-browser/

New features include:

- additional per-project/example links to API docs, live demos, source code
- for each tag only the top 10 related tags are shown now to avoid (well, minimize) cognitive overload
- dozens of tags have been pruned/merged/replaced (across dozens of package.json files, an ongoing process for the near future...)
- glossary/reference link additions
- CSS updates

Since this entire tool is also entirely made with https://thi.ng/umbrella packages, some of these features (e.g. the related tag ranking/sorting) has been implemented & simplified via new additions to the https://thi.ng/transducers package (e.g. the new `sortedFrequencies()` reducer function, just released). Please see the main repo readme (section: "Latest updates") for more...

#ReleaseTuesday #ThingUmbrella #Discoverability #Exploration #FacetedSearch #Tagging #Metadata #Documentation #UI #OpenSource

Updated the multi ridge-line plot example with more interactive/reactive controls to shape the test data (simplex noise) and also to demonstrate how the cursors/labels are using interpolated data (best visible in lower resolutions)... As another small aside, the "resolution" slider is configured to use exponential behavior, i.e. value changes on the LHS are smaller/slower than on the RHS...

The latest https://thi.ng/viz update has also just been released, so you can "try it at home/work" too now...

Demo:
https://demo.thi.ng/umbrella/viz-ridge-lines/

Commented source code:
https://github.com/thi-ng/umbrella/blob/develop/examples/viz-ridge-lines/src/index.ts

cc/ @computersandblues

#ThingUmbrella #ReleaseTuesday #DataViz #Visualization #AreaPlot #SVG #OpenSource #TypeScript #JavaScript

Declarative, functional & multi-format data visualization toolkit based around @thi.ng/hiccup

thi.ng/viz

#ReleaseTuesday: New major version (v3.0.0) of https://thi.ng/ksuid, a highly configurable KSUID & ULID generator/parser...

Also did some updates to the main #ThingUmbrella readme & contributing docs, still too long (I guess), but now with TOC, links to project templates, updated info & fixed links...

https://github.com/thi-ng/umbrella/blob/develop/README.md

#ReleaseTuesday The first release cycle of 2023 has direct updates to 15 of the 177 packages, incl. 2 new packages and new features, additions & bug fixes to others. Also various package readme updates. Please see the main readme in the mono-repo and change logs for each package for further details:

https://github.com/thi-ng/umbrella/blob/develop/README.md#latest-updates

Happy coding! :)

#ThingUmbrella #TypeScript

umbrella/README.md at develop · thi-ng/umbrella

⛱ Broadly scoped ecosystem & mono-repository of 190 TypeScript projects (and 155 examples) for general purpose, functional, data driven development - thi-ng/umbrella

GitHub