#thingumbrella — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #thingumbrella, aggregated by home.social.
-
Here's a short code snippet I used to convert & chop the massive 44000 x 25000 pixel GeoTIFF DEM file into smaller PNG tiles for easier visualization:
https://gist.github.com/postspectacular/10e2940c4bb3fd706f77c3e65f1b4427
The tool uses the following #ThingUmbrella packages:
- https://thi.ng/imago: Image processing/compositing pipelines
- https://thi.ng/pixel: Multi-format integer/float pixel buffers
- https://thi.ng/pixel-io-geotiff: GeoTIFF parsing
- https://thi.ng/transducers: Iteration helpers/transformers
-
Here's a short code snippet I used to convert & chop the massive 44000 x 25000 pixel GeoTIFF DEM file into smaller PNG tiles for easier visualization:
https://gist.github.com/postspectacular/10e2940c4bb3fd706f77c3e65f1b4427
The tool uses the following #ThingUmbrella packages:
- https://thi.ng/imago: Image processing/compositing pipelines
- https://thi.ng/pixel: Multi-format integer/float pixel buffers
- https://thi.ng/pixel-io-geotiff: GeoTIFF parsing
- https://thi.ng/transducers: Iteration helpers/transformers
-
Here's a short code snippet I used to convert & chop the massive 44000 x 25000 pixel GeoTIFF DEM file into smaller PNG tiles for easier visualization:
https://gist.github.com/postspectacular/10e2940c4bb3fd706f77c3e65f1b4427
The tool uses the following #ThingUmbrella packages:
- https://thi.ng/imago: Image processing/compositing pipelines
- https://thi.ng/pixel: Multi-format integer/float pixel buffers
- https://thi.ng/pixel-io-geotiff: GeoTIFF parsing
- https://thi.ng/transducers: Iteration helpers/transformers
-
Here's a short code snippet I used to convert & chop the massive 44000 x 25000 pixel GeoTIFF DEM file into smaller PNG tiles for easier visualization:
https://gist.github.com/postspectacular/10e2940c4bb3fd706f77c3e65f1b4427
The tool uses the following #ThingUmbrella packages:
- https://thi.ng/imago: Image processing/compositing pipelines
- https://thi.ng/pixel: Multi-format integer/float pixel buffers
- https://thi.ng/pixel-io-geotiff: GeoTIFF parsing
- https://thi.ng/transducers: Iteration helpers/transformers
-
Here's a short code snippet I used to convert & chop the massive 44000 x 25000 pixel GeoTIFF DEM file into smaller PNG tiles for easier visualization:
https://gist.github.com/postspectacular/10e2940c4bb3fd706f77c3e65f1b4427
The tool uses the following #ThingUmbrella packages:
- https://thi.ng/imago: Image processing/compositing pipelines
- https://thi.ng/pixel: Multi-format integer/float pixel buffers
- https://thi.ng/pixel-io-geotiff: GeoTIFF parsing
- https://thi.ng/transducers: Iteration helpers/transformers
-
This time with video (hopefully)... I found a 5 meter resolution digital elevation model of a part of the Austrian Alps (Tyrol[1]) and quickly visualized the region around the aforementioned Hintereisferner glacier using my https://shadergraph.thi.ng/ editor. The glacier itself is visible in the bottom left corner of the cropped terrain. The picture I posted earlier[2] was taken just north-east of the valley confluence nearest to the glacier tongue. Neighboring Kesselwandferner and Gepatschferner (the largest of the remaining glaciers in the Eastern Alps) are visible too...
If you want to try it with your own DEMs, just drag the image (as PNG) into the browser window, then create shader nodes: Normal map, Ambient Occlusion, Bump and Multiply (and set respective inputs for each node/pass)
[1] https://www.tirol.gv.at/sicherheit/geoinformationen-karten/freie-laserscandaten-und-orthofotos/
[2] https://mastodon.thi.ng/@toxi/117054172520918467
#ThingUmbrella #WebGL #ShaderGraph #DEM #GIS #Terrain #Glacier #Tyrol
-
This time with video (hopefully)... I found a 5 meter resolution digital elevation model of a part of the Austrian Alps (Tyrol[1]) and quickly visualized the region around the aforementioned Hintereisferner glacier using my https://shadergraph.thi.ng/ editor. The glacier itself is visible in the bottom left corner of the cropped terrain. The picture I posted earlier[2] was taken just north-east of the valley confluence nearest to the glacier tongue. Neighboring Kesselwandferner and Gepatschferner (the largest of the remaining glaciers in the Eastern Alps) are visible too...
If you want to try it with your own DEMs, just drag the image (as PNG) into the browser window, then create shader nodes: Normal map, Ambient Occlusion, Bump and Multiply (and set respective inputs for each node/pass)
[1] https://www.tirol.gv.at/sicherheit/geoinformationen-karten/freie-laserscandaten-und-orthofotos/
[2] https://mastodon.thi.ng/@toxi/117054172520918467
#ThingUmbrella #WebGL #ShaderGraph #DEM #GIS #Terrain #Glacier #Tyrol
-
This time with video (hopefully)... I found a 5 meter resolution digital elevation model of a part of the Austrian Alps (Tyrol[1]) and quickly visualized the region around the aforementioned Hintereisferner glacier using my https://shadergraph.thi.ng/ editor. The glacier itself is visible in the bottom left corner of the cropped terrain. The picture I posted earlier[2] was taken just north-east of the valley confluence nearest to the glacier tongue. Neighboring Kesselwandferner and Gepatschferner (the largest of the remaining glaciers in the Eastern Alps) are visible too...
If you want to try it with your own DEMs, just drag the image (as PNG) into the browser window, then create shader nodes: Normal map, Ambient Occlusion, Bump and Multiply (and set respective inputs for each node/pass)
[1] https://www.tirol.gv.at/sicherheit/geoinformationen-karten/freie-laserscandaten-und-orthofotos/
[2] https://mastodon.thi.ng/@toxi/117054172520918467
#ThingUmbrella #WebGL #ShaderGraph #DEM #GIS #Terrain #Glacier #Tyrol
-
This time with video (hopefully)... I found a 5 meter resolution digital elevation model of a part of the Austrian Alps (Tyrol[1]) and quickly visualized the region around the aforementioned Hintereisferner glacier using my https://shadergraph.thi.ng/ editor. The glacier itself is visible in the bottom left corner of the cropped terrain. The picture I posted earlier[2] was taken just north-east of the valley confluence nearest to the glacier tongue. Neighboring Kesselwandferner and Gepatschferner (the largest of the remaining glaciers in the Eastern Alps) are visible too...
If you want to try it with your own DEMs, just drag the image (as PNG) into the browser window, then create shader nodes: Normal map, Ambient Occlusion, Bump and Multiply (and set respective inputs for each node/pass)
[1] https://www.tirol.gv.at/sicherheit/geoinformationen-karten/freie-laserscandaten-und-orthofotos/
[2] https://mastodon.thi.ng/@toxi/117054172520918467
#ThingUmbrella #WebGL #ShaderGraph #DEM #GIS #Terrain #Glacier #Tyrol
-
This time with video (hopefully)... I found a 5 meter resolution digital elevation model of a part of the Austrian Alps (Tyrol[1]) and quickly visualized the region around the aforementioned Hintereisferner glacier using my https://shadergraph.thi.ng/ editor. The glacier itself is visible in the bottom left corner of the cropped terrain. The picture I posted earlier[2] was taken just north-east of the valley confluence nearest to the glacier tongue. Neighboring Kesselwandferner and Gepatschferner (the largest of the remaining glaciers in the Eastern Alps) are visible too...
If you want to try it with your own DEMs, just drag the image (as PNG) into the browser window, then create shader nodes: Normal map, Ambient Occlusion, Bump and Multiply (and set respective inputs for each node/pass)
[1] https://www.tirol.gv.at/sicherheit/geoinformationen-karten/freie-laserscandaten-und-orthofotos/
[2] https://mastodon.thi.ng/@toxi/117054172520918467
#ThingUmbrella #WebGL #ShaderGraph #DEM #GIS #Terrain #Glacier #Tyrol
-
Heads up for those who care: A flurry of #ThingUmbrella updates/additions incoming, incl. new nD spatial hash table (with 2D/3D optimizations), indexed mesh data structure, updates to https://thi.ng/vectors and https://thi.ng/webgl and other small fixes. More details in next day or so...
New example project (#189) to demonstrate basic usage of the new mesh type (and conversion from imported OBJ model):
Demo:
https://demo.thi.ng/umbrella/webgl-mesh/Source code:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-mesh/src/index.ts#ThingUmbrella #WebGL #Mesh #Geometry #TypeScript #JavaScript
-
Heads up for those who care: A flurry of #ThingUmbrella updates/additions incoming, incl. new nD spatial hash table (with 2D/3D optimizations), indexed mesh data structure, updates to https://thi.ng/vectors and https://thi.ng/webgl and other small fixes. More details in next day or so...
New example project (#189) to demonstrate basic usage of the new mesh type (and conversion from imported OBJ model):
Demo:
https://demo.thi.ng/umbrella/webgl-mesh/Source code:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-mesh/src/index.ts#ThingUmbrella #WebGL #Mesh #Geometry #TypeScript #JavaScript
-
Heads up for those who care: A flurry of #ThingUmbrella updates/additions incoming, incl. new nD spatial hash table (with 2D/3D optimizations), indexed mesh data structure, updates to https://thi.ng/vectors and https://thi.ng/webgl and other small fixes. More details in next day or so...
New example project (#189) to demonstrate basic usage of the new mesh type (and conversion from imported OBJ model):
Demo:
https://demo.thi.ng/umbrella/webgl-mesh/Source code:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-mesh/src/index.ts#ThingUmbrella #WebGL #Mesh #Geometry #TypeScript #JavaScript
-
Heads up for those who care: A flurry of #ThingUmbrella updates/additions incoming, incl. new nD spatial hash table (with 2D/3D optimizations), indexed mesh data structure, updates to https://thi.ng/vectors and https://thi.ng/webgl and other small fixes. More details in next day or so...
New example project (#189) to demonstrate basic usage of the new mesh type (and conversion from imported OBJ model):
Demo:
https://demo.thi.ng/umbrella/webgl-mesh/Source code:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-mesh/src/index.ts#ThingUmbrella #WebGL #Mesh #Geometry #TypeScript #JavaScript
-
Heads up for those who care: A flurry of #ThingUmbrella updates/additions incoming, incl. new nD spatial hash table (with 2D/3D optimizations), indexed mesh data structure, updates to https://thi.ng/vectors and https://thi.ng/webgl and other small fixes. More details in next day or so...
New example project (#189) to demonstrate basic usage of the new mesh type (and conversion from imported OBJ model):
Demo:
https://demo.thi.ng/umbrella/webgl-mesh/Source code:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-mesh/src/index.ts#ThingUmbrella #WebGL #Mesh #Geometry #TypeScript #JavaScript
-
I somehow missed that the Go-rewrite of #TypeScript (v7.0.2) with supposedly 10x performance already had been released two weeks ago[1]. Of course, I immediately had to try it out with https://thi.ng/umbrella and see how this impacts build times. tl;dr It's very impressive and congrats to the team who pulled it off!
For context, the current #ThingUmbrella codebase contains 328k lines of TypeScript source code, of which 218k lines are actual code, 87k lines comments, the rest blanks. There're 216 packages (aka individual libraries) and 188 example projects to demonstrate their usage.
TS v6 build times:
- from scratch (packages only): 5m 44s
- rebuild (packages only): 2m 18s
- examples: 1m 18s
TS v7 build times:
- from scratch (packages only): 1m 50s
- rebuild (packages only): 29s 166ms
- examples: 56s 193ms
This is really cool and means a 3-5x speed up for (re)building all packages. The difference for example projects is much smaller, since there most of the time there is consumed by Vite (TypeScript is only used for type checking prior to building).
Currently (for TS6), my package build steps are actually using
esbuildfor code generation and heretscis also only used for type checking and outputting type declaration files. This was done becauseesbuildis much faster (even in incremental mode). But with the TS7 speedups, I don't need this extra build tool anymore...Notice for users: I've not yet officially switched to TS7, but will do so in the near future. I'm also grateful that there were only minor code changes (and fair ones) required for switching to the new version. For example, TS7 is catching obsolete generics, which previous versions didn't complain about...
Actually very happy about this new release (usually more of a dread)!
[1] https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
-
I somehow missed that the Go-rewrite of #TypeScript (v7.0.2) with supposedly 10x performance already had been released two weeks ago[1]. Of course, I immediately had to try it out with https://thi.ng/umbrella and see how this impacts build times. tl;dr It's very impressive and congrats to the team who pulled it off!
For context, the current #ThingUmbrella codebase contains 328k lines of TypeScript source code, of which 218k lines are actual code, 87k lines comments, the rest blanks. There're 216 packages (aka individual libraries) and 188 example projects to demonstrate their usage.
TS v6 build times:
- from scratch (packages only): 5m 44s
- rebuild (packages only): 2m 18s
- examples: 1m 18s
TS v7 build times:
- from scratch (packages only): 1m 50s
- rebuild (packages only): 29s 166ms
- examples: 56s 193ms
This is really cool and means a 3-5x speed up for (re)building all packages. The difference for example projects is much smaller, since there most of the time there is consumed by Vite (TypeScript is only used for type checking prior to building).
Currently (for TS6), my package build steps are actually using
esbuildfor code generation and heretscis also only used for type checking and outputting type declaration files. This was done becauseesbuildis much faster (even in incremental mode). But with the TS7 speedups, I don't need this extra build tool anymore...Notice for users: I've not yet officially switched to TS7, but will do so in the near future. I'm also grateful that there were only minor code changes (and fair ones) required for switching to the new version. For example, TS7 is catching obsolete generics, which previous versions didn't complain about...
Actually very happy about this new release (usually more of a dread)!
[1] https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
-
I somehow missed that the Go-rewrite of #TypeScript (v7.0.2) with supposedly 10x performance already had been released two weeks ago[1]. Of course, I immediately had to try it out with https://thi.ng/umbrella and see how this impacts build times. tl;dr It's very impressive and congrats to the team who pulled it off!
For context, the current #ThingUmbrella codebase contains 328k lines of TypeScript source code, of which 218k lines are actual code, 87k lines comments, the rest blanks. There're 216 packages (aka individual libraries) and 188 example projects to demonstrate their usage.
TS v6 build times:
- from scratch (packages only): 5m 44s
- rebuild (packages only): 2m 18s
- examples: 1m 18s
TS v7 build times:
- from scratch (packages only): 1m 50s
- rebuild (packages only): 29s 166ms
- examples: 56s 193ms
This is really cool and means a 3-5x speed up for (re)building all packages. The difference for example projects is much smaller, since there most of the time there is consumed by Vite (TypeScript is only used for type checking prior to building).
Currently (for TS6), my package build steps are actually using
esbuildfor code generation and heretscis also only used for type checking and outputting type declaration files. This was done becauseesbuildis much faster (even in incremental mode). But with the TS7 speedups, I don't need this extra build tool anymore...Notice for users: I've not yet officially switched to TS7, but will do so in the near future. I'm also grateful that there were only minor code changes (and fair ones) required for switching to the new version. For example, TS7 is catching obsolete generics, which previous versions didn't complain about...
Actually very happy about this new release (usually more of a dread)!
[1] https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
-
I somehow missed that the Go-rewrite of #TypeScript (v7.0.2) with supposedly 10x performance already had been released two weeks ago[1]. Of course, I immediately had to try it out with https://thi.ng/umbrella and see how this impacts build times. tl;dr It's very impressive and congrats to the team who pulled it off!
For context, the current #ThingUmbrella codebase contains 328k lines of TypeScript source code, of which 218k lines are actual code, 87k lines comments, the rest blanks. There're 216 packages (aka individual libraries) and 188 example projects to demonstrate their usage.
TS v6 build times:
- from scratch (packages only): 5m 44s
- rebuild (packages only): 2m 18s
- examples: 1m 18s
TS v7 build times:
- from scratch (packages only): 1m 50s
- rebuild (packages only): 29s 166ms
- examples: 56s 193ms
This is really cool and means a 3-5x speed up for (re)building all packages. The difference for example projects is much smaller, since there most of the time there is consumed by Vite (TypeScript is only used for type checking prior to building).
Currently (for TS6), my package build steps are actually using
esbuildfor code generation and heretscis also only used for type checking and outputting type declaration files. This was done becauseesbuildis much faster (even in incremental mode). But with the TS7 speedups, I don't need this extra build tool anymore...Notice for users: I've not yet officially switched to TS7, but will do so in the near future. I'm also grateful that there were only minor code changes (and fair ones) required for switching to the new version. For example, TS7 is catching obsolete generics, which previous versions didn't complain about...
Actually very happy about this new release (usually more of a dread)!
[1] https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
-
I somehow missed that the Go-rewrite of #TypeScript (v7.0.2) with supposedly 10x performance already had been released two weeks ago[1]. Of course, I immediately had to try it out with https://thi.ng/umbrella and see how this impacts build times. tl;dr It's very impressive and congrats to the team who pulled it off!
For context, the current #ThingUmbrella codebase contains 328k lines of TypeScript source code, of which 218k lines are actual code, 87k lines comments, the rest blanks. There're 216 packages (aka individual libraries) and 188 example projects to demonstrate their usage.
TS v6 build times:
- from scratch (packages only): 5m 44s
- rebuild (packages only): 2m 18s
- examples: 1m 18s
TS v7 build times:
- from scratch (packages only): 1m 50s
- rebuild (packages only): 29s 166ms
- examples: 56s 193ms
This is really cool and means a 3-5x speed up for (re)building all packages. The difference for example projects is much smaller, since there most of the time there is consumed by Vite (TypeScript is only used for type checking prior to building).
Currently (for TS6), my package build steps are actually using
esbuildfor code generation and heretscis also only used for type checking and outputting type declaration files. This was done becauseesbuildis much faster (even in incremental mode). But with the TS7 speedups, I don't need this extra build tool anymore...Notice for users: I've not yet officially switched to TS7, but will do so in the near future. I'm also grateful that there were only minor code changes (and fair ones) required for switching to the new version. For example, TS7 is catching obsolete generics, which previous versions didn't complain about...
Actually very happy about this new release (usually more of a dread)!
[1] https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
-
With Firefox 153 officially supporting
WebAssembly.promisingand its counterpartWebAssembly.Suspending[1], I've updated https://thi.ng/wasm-api to simplify the integration of hybrid JS/WASM async function calls, so you don't have to worry about manually creating these wrappers:- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
WebAssembly.Suspending - WASM exports declared/listed via
WasmModuleOpts.asyncExportswill be auto-wrapped usingWebAssembly.promising
However, since that WASM feature isn't yet supported by Safari (no surprise there) and various mobile browsers, it's best to check for and selectively limit features relying on this mechanism...
Happy coding! :)
[1] https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153
#ReleaseAnnouncement #ThingUmbrella #OpenSource #WASM #WebAssembly #TypeScript #JavaScript #Async
- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
-
With Firefox 153 officially supporting
WebAssembly.promisingand its counterpartWebAssembly.Suspending[1], I've updated https://thi.ng/wasm-api to simplify the integration of hybrid JS/WASM async function calls, so you don't have to worry about manually creating these wrappers:- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
WebAssembly.Suspending - WASM exports declared/listed via
WasmModuleOpts.asyncExportswill be auto-wrapped usingWebAssembly.promising
However, since that WASM feature isn't yet supported by Safari (no surprise there) and various mobile browsers, it's best to check for and selectively limit features relying on this mechanism...
Happy coding! :)
[1] https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153
#ReleaseAnnouncement #ThingUmbrella #OpenSource #WASM #WebAssembly #TypeScript #JavaScript #Async
- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
-
With Firefox 153 officially supporting
WebAssembly.promisingand its counterpartWebAssembly.Suspending[1], I've updated https://thi.ng/wasm-api to simplify the integration of hybrid JS/WASM async function calls, so you don't have to worry about manually creating these wrappers:- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
WebAssembly.Suspending - WASM exports declared/listed via
WasmModuleOpts.asyncExportswill be auto-wrapped usingWebAssembly.promising
However, since that WASM feature isn't yet supported by Safari (no surprise there) and various mobile browsers, it's best to check for and selectively limit features relying on this mechanism...
Happy coding! :)
[1] https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153
#ReleaseAnnouncement #ThingUmbrella #OpenSource #WASM #WebAssembly #TypeScript #JavaScript #Async
- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
-
With Firefox 153 officially supporting
WebAssembly.promisingand its counterpartWebAssembly.Suspending[1], I've updated https://thi.ng/wasm-api to simplify the integration of hybrid JS/WASM async function calls, so you don't have to worry about manually creating these wrappers:- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
WebAssembly.Suspending - WASM exports declared/listed via
WasmModuleOpts.asyncExportswill be auto-wrapped usingWebAssembly.promising
However, since that WASM feature isn't yet supported by Safari (no surprise there) and various mobile browsers, it's best to check for and selectively limit features relying on this mechanism...
Happy coding! :)
[1] https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153
#ReleaseAnnouncement #ThingUmbrella #OpenSource #WASM #WebAssembly #TypeScript #JavaScript #Async
- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
-
With Firefox 153 officially supporting
WebAssembly.promisingand its counterpartWebAssembly.Suspending[1], I've updated https://thi.ng/wasm-api to simplify the integration of hybrid JS/WASM async function calls, so you don't have to worry about manually creating these wrappers:- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
WebAssembly.Suspending - WASM exports declared/listed via
WasmModuleOpts.asyncExportswill be auto-wrapped usingWebAssembly.promising
However, since that WASM feature isn't yet supported by Safari (no surprise there) and various mobile browsers, it's best to check for and selectively limit features relying on this mechanism...
Happy coding! :)
[1] https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/153
#ReleaseAnnouncement #ThingUmbrella #OpenSource #WASM #WebAssembly #TypeScript #JavaScript #Async
- JavaScript async functions declared in a module's WASM imports will be auto-wrapped using
-
Another #ThingUmbrella release cycle this AM:
- fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
ReadableStreamcan (finally) be iterated viafor await(...)syntax, but then turns out it's still only planned for v27 [2]... 🙄 - added async versions of all timing & benchmarking functions in https://thi.ng/bench to support benchmarking async functions
[1] https://webkit.org/blog/17862/webkit-features-for-safari-26-4/#web-api
[2] https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream#browser_compatibility - fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
-
Another #ThingUmbrella release cycle this AM:
- fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
ReadableStreamcan (finally) be iterated viafor await(...)syntax, but then turns out it's still only planned for v27 [2]... 🙄 - added async versions of all timing & benchmarking functions in https://thi.ng/bench to support benchmarking async functions
[1] https://webkit.org/blog/17862/webkit-features-for-safari-26-4/#web-api
[2] https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream#browser_compatibility - fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
-
Another #ThingUmbrella release cycle this AM:
- fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
ReadableStreamcan (finally) be iterated viafor await(...)syntax, but then turns out it's still only planned for v27 [2]... 🙄 - added async versions of all timing & benchmarking functions in https://thi.ng/bench to support benchmarking async functions
[1] https://webkit.org/blog/17862/webkit-features-for-safari-26-4/#web-api
[2] https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream#browser_compatibility - fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
-
Another #ThingUmbrella release cycle this AM:
- fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
ReadableStreamcan (finally) be iterated viafor await(...)syntax, but then turns out it's still only planned for v27 [2]... 🙄 - added async versions of all timing & benchmarking functions in https://thi.ng/bench to support benchmarking async functions
[1] https://webkit.org/blog/17862/webkit-features-for-safari-26-4/#web-api
[2] https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream#browser_compatibility - fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
-
Another #ThingUmbrella release cycle this AM:
- fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
ReadableStreamcan (finally) be iterated viafor await(...)syntax, but then turns out it's still only planned for v27 [2]... 🙄 - added async versions of all timing & benchmarking functions in https://thi.ng/bench to support benchmarking async functions
[1] https://webkit.org/blog/17862/webkit-features-for-safari-26-4/#web-api
[2] https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream#browser_compatibility - fixed yesterday's https://thi.ng/geom-io-obj stream parser update to also support #Safari (aka the modern IE6-like browser problem child), which in the release notes for Safari v26.4 claims[1] that
-
New #ThingUmbrella release(s): Updated the https://thi.ng/geom-io-obj OBJ mesh parser to support stream parsing using async iterables. This allows direct piping
fetch()responses to the parser.const response = await fetch(MODEL_URL);
const objModel = await parseOBJFromStream(response.body);Also polished and published a related small example project for it (incl. arcball camera controller, which had an update too):
Demo (Click & drag to rotate view, touchpad/mousewheel to zoom):
https://demo.thi.ng/umbrella/webgl-obj/Source:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-obj/src/index.tsAlternatively to stream parsing, there's also a generator/co-routine based version. This can be used standalone or together with https://thi.ng/fibers to better control the time slicing behavior when parsing large model files (tens or hundreds of MB) and so gives fine-grained control to avoid blocking the main UI thread:
import { timeSlice } from "@thi.ng/fibers";
const response = await fetch(MODEL_URL);
const src = await response.text();
// parse in 10 millisecond time slices
const model = await timeSlice(parseOBJGenerator(src), 10).run().promise();More background info & discussion for those interested:
https://codeberg.org/thi.ng/umbrella/pulls/405#OpenSource #Stream #Mesh #OBJ #WebGL #TypeScript #JavaScript
-
New #ThingUmbrella release(s): Updated the https://thi.ng/geom-io-obj OBJ mesh parser to support stream parsing using async iterables. This allows direct piping
fetch()responses to the parser.const response = await fetch(MODEL_URL);
const objModel = await parseOBJFromStream(response.body);Also polished and published a related small example project for it (incl. arcball camera controller, which had an update too):
Demo (Click & drag to rotate view, touchpad/mousewheel to zoom):
https://demo.thi.ng/umbrella/webgl-obj/Source:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-obj/src/index.tsAlternatively to stream parsing, there's also a generator/co-routine based version. This can be used standalone or together with https://thi.ng/fibers to better control the time slicing behavior when parsing large model files (tens or hundreds of MB) and so gives fine-grained control to avoid blocking the main UI thread:
import { timeSlice } from "@thi.ng/fibers";
const response = await fetch(MODEL_URL);
const src = await response.text();
// parse in 10 millisecond time slices
const model = await timeSlice(parseOBJGenerator(src), 10).run().promise();More background info & discussion for those interested:
https://codeberg.org/thi.ng/umbrella/pulls/405#OpenSource #Stream #Mesh #OBJ #WebGL #TypeScript #JavaScript
-
New #ThingUmbrella release(s): Updated the https://thi.ng/geom-io-obj OBJ mesh parser to support stream parsing using async iterables. This allows direct piping
fetch()responses to the parser.const response = await fetch(MODEL_URL);
const objModel = await parseOBJFromStream(response.body);Also polished and published a related small example project for it (incl. arcball camera controller, which had an update too):
Demo (Click & drag to rotate view, touchpad/mousewheel to zoom):
https://demo.thi.ng/umbrella/webgl-obj/Source:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-obj/src/index.tsAlternatively to stream parsing, there's also a generator/co-routine based version. This can be used standalone or together with https://thi.ng/fibers to better control the time slicing behavior when parsing large model files (tens or hundreds of MB) and so gives fine-grained control to avoid blocking the main UI thread:
import { timeSlice } from "@thi.ng/fibers";
const response = await fetch(MODEL_URL);
const src = await response.text();
// parse in 10 millisecond time slices
const model = await timeSlice(parseOBJGenerator(src), 10).run().promise();More background info & discussion for those interested:
https://codeberg.org/thi.ng/umbrella/pulls/405#OpenSource #Stream #Mesh #OBJ #WebGL #TypeScript #JavaScript
-
New #ThingUmbrella release(s): Updated the https://thi.ng/geom-io-obj OBJ mesh parser to support stream parsing using async iterables. This allows direct piping
fetch()responses to the parser.const response = await fetch(MODEL_URL);
const objModel = await parseOBJFromStream(response.body);Also polished and published a related small example project for it (incl. arcball camera controller, which had an update too):
Demo (Click & drag to rotate view, touchpad/mousewheel to zoom):
https://demo.thi.ng/umbrella/webgl-obj/Source:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-obj/src/index.tsAlternatively to stream parsing, there's also a generator/co-routine based version. This can be used standalone or together with https://thi.ng/fibers to better control the time slicing behavior when parsing large model files (tens or hundreds of MB) and so gives fine-grained control to avoid blocking the main UI thread:
import { timeSlice } from "@thi.ng/fibers";
const response = await fetch(MODEL_URL);
const src = await response.text();
// parse in 10 millisecond time slices
const model = await timeSlice(parseOBJGenerator(src), 10).run().promise();More background info & discussion for those interested:
https://codeberg.org/thi.ng/umbrella/pulls/405#OpenSource #Stream #Mesh #OBJ #WebGL #TypeScript #JavaScript
-
New #ThingUmbrella release(s): Updated the https://thi.ng/geom-io-obj OBJ mesh parser to support stream parsing using async iterables. This allows direct piping
fetch()responses to the parser.const response = await fetch(MODEL_URL);
const objModel = await parseOBJFromStream(response.body);Also polished and published a related small example project for it (incl. arcball camera controller, which had an update too):
Demo (Click & drag to rotate view, touchpad/mousewheel to zoom):
https://demo.thi.ng/umbrella/webgl-obj/Source:
https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/webgl-obj/src/index.tsAlternatively to stream parsing, there's also a generator/co-routine based version. This can be used standalone or together with https://thi.ng/fibers to better control the time slicing behavior when parsing large model files (tens or hundreds of MB) and so gives fine-grained control to avoid blocking the main UI thread:
import { timeSlice } from "@thi.ng/fibers";
const response = await fetch(MODEL_URL);
const src = await response.text();
// parse in 10 millisecond time slices
const model = await timeSlice(parseOBJGenerator(src), 10).run().promise();More background info & discussion for those interested:
https://codeberg.org/thi.ng/umbrella/pulls/405#OpenSource #Stream #Mesh #OBJ #WebGL #TypeScript #JavaScript
-
Some weeks ago I got a cheap and fast TTArtisan 50mm/f1.2 prime lens to take better indoor pictures and close ups. Since it's fixed length and manual focus only, it's a very different kind of taking pictures, selecting/framing motifs, and often feels like a throwback to my first camera in the 1980s. I love it!
Since the lens has quite noticeable vignetting, I found it interesting how that effect is showing up as curve in the image waveform...
You can visualize your own images here:
https://demo.thi.ng/umbrella/pixel-waveform/ -
Some weeks ago I got a cheap and fast TTArtisan 50mm/f1.2 prime lens to take better indoor pictures and close ups. Since it's fixed length and manual focus only, it's a very different kind of taking pictures, selecting/framing motifs, and often feels like a throwback to my first camera in the 1980s. I love it!
Since the lens has quite noticeable vignetting, I found it interesting how that effect is showing up as curve in the image waveform...
You can visualize your own images here:
https://demo.thi.ng/umbrella/pixel-waveform/ -
Some weeks ago I got a cheap and fast TTArtisan 50mm/f1.2 prime lens to take better indoor pictures and close ups. Since it's fixed length and manual focus only, it's a very different kind of taking pictures, selecting/framing motifs, and often feels like a throwback to my first camera in the 1980s. I love it!
Since the lens has quite noticeable vignetting, I found it interesting how that effect is showing up as curve in the image waveform...
You can visualize your own images here:
https://demo.thi.ng/umbrella/pixel-waveform/ -
Some weeks ago I got a cheap and fast TTArtisan 50mm/f1.2 prime lens to take better indoor pictures and close ups. Since it's fixed length and manual focus only, it's a very different kind of taking pictures, selecting/framing motifs, and often feels like a throwback to my first camera in the 1980s. I love it!
Since the lens has quite noticeable vignetting, I found it interesting how that effect is showing up as curve in the image waveform...
You can visualize your own images here:
https://demo.thi.ng/umbrella/pixel-waveform/ -
Some weeks ago I got a cheap and fast TTArtisan 50mm/f1.2 prime lens to take better indoor pictures and close ups. Since it's fixed length and manual focus only, it's a very different kind of taking pictures, selecting/framing motifs, and often feels like a throwback to my first camera in the 1980s. I love it!
Since the lens has quite noticeable vignetting, I found it interesting how that effect is showing up as curve in the image waveform...
You can visualize your own images here:
https://demo.thi.ng/umbrella/pixel-waveform/ -
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
-
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
-
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
-
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
-
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
-
CW: Fundraising for Open Source work & maintenance
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!
-
CW: Fundraising for Open Source work & maintenance
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!
-
CW: Fundraising for Open Source work & maintenance
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!
-
CW: Fundraising for Open Source work & maintenance
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!
-
CW: Fundraising for Open Source work & maintenance
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!
-
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):
- OpenCL interop (e.g. https://thi.ng/raymarchcl, https://thi.ng/simplecl)
- GLSL (e.g. https://thi.ng/shader-ast)
- C11 (https://github.com/thi-ng/c-thing, https://thi.ng/synstack)
- Zig (https://github.com/thi-ng/zig-thing, https://thi.ng/wasm-api)
- Forth (https://thi.ng/charlie)
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...
-
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):
- OpenCL interop (e.g. https://thi.ng/raymarchcl, https://thi.ng/simplecl)
- GLSL (e.g. https://thi.ng/shader-ast)
- C11 (https://github.com/thi-ng/c-thing, https://thi.ng/synstack)
- Zig (https://github.com/thi-ng/zig-thing, https://thi.ng/wasm-api)
- Forth (https://thi.ng/charlie)
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...
-
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):
- OpenCL interop (e.g. https://thi.ng/raymarchcl, https://thi.ng/simplecl)
- GLSL (e.g. https://thi.ng/shader-ast)
- C11 (https://github.com/thi-ng/c-thing, https://thi.ng/synstack)
- Zig (https://github.com/thi-ng/zig-thing, https://thi.ng/wasm-api)
- Forth (https://thi.ng/charlie)
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...
-
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):
- OpenCL interop (e.g. https://thi.ng/raymarchcl, https://thi.ng/simplecl)
- GLSL (e.g. https://thi.ng/shader-ast)
- C11 (https://github.com/thi-ng/c-thing, https://thi.ng/synstack)
- Zig (https://github.com/thi-ng/zig-thing, https://thi.ng/wasm-api)
- Forth (https://thi.ng/charlie)
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...
-
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):
- OpenCL interop (e.g. https://thi.ng/raymarchcl, https://thi.ng/simplecl)
- GLSL (e.g. https://thi.ng/shader-ast)
- C11 (https://github.com/thi-ng/c-thing, https://thi.ng/synstack)
- Zig (https://github.com/thi-ng/zig-thing, https://thi.ng/wasm-api)
- Forth (https://thi.ng/charlie)
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...
-
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):
More project & syntax info here:
https://thi.ng/proctext#Microfiction #ProcGen #ProceduralText #ThingUmbrella #DSL #TypeScript #LLMPoisoning #NoAI
-
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):
More project & syntax info here:
https://thi.ng/proctext#Microfiction #ProcGen #ProceduralText #ThingUmbrella #DSL #TypeScript #LLMPoisoning #NoAI
-
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):
More project & syntax info here:
https://thi.ng/proctext#Microfiction #ProcGen #ProceduralText #ThingUmbrella #DSL #TypeScript #LLMPoisoning #NoAI
-
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):
More project & syntax info here:
https://thi.ng/proctext#Microfiction #ProcGen #ProceduralText #ThingUmbrella #DSL #TypeScript #LLMPoisoning #NoAI
-
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):
More project & syntax info here:
https://thi.ng/proctext#Microfiction #ProcGen #ProceduralText #ThingUmbrella #DSL #TypeScript #LLMPoisoning #NoAI