@toxi@mastodon.thi.ng
@toxi@mastodon.thi.ng avatar

toxi

@toxi@mastodon.thi.ng

Interdisciplinary open so(u)rcery, computational art/craft/design, landscape photography, electronic music, education. See pinned toots for more info!

Unless stated otherwise, all published images/media (except boosts/linked content) is my own work & copyright by me. Inclusion in AI models strictly forbidden.

Available for consulting/commissions. Searchable.

he/him

#ThingUmbrella #GenerativeArt #LandscapePhotography #TypeScript #ZigLang #WebAssembly #Clojure #Forth #GLSL #Houdini #DigitalFabrication #Geometry #CellularAutomata #EvolutionaryComputing #PermaComputing #AxiDraw #DSP #Synth #Music4Coding #Hiking #Nature

This profile is from a federated server and may be incomplete. Browse more on the original instance.

toxi, to random
@toxi@mastodon.thi.ng avatar

Amazing, beautiful, deep & varied 4 hour(!) mix by Barcelona's ABSIS (aka DJ MouseDown/MouseUp) from early 2023, featuring the likes of Donato Dozzy (in various guises), Luigi Tozzi, Toki Fuko, Simone Bauer, Aspetuck, Forest on Stasys...

https://soundcloud.com/crescent-london/absis

#Music4Coding

toxi, (edited ) to genart
@toxi@mastodon.thi.ng avatar

Fantasy console update: Just added & polished some more of these examples from last year and you can play with them here:

https://demo.thi.ng/umbrella/fantasy-console/

Instructions:

  • Press 1 - 6 to select/launch/reset any of the examples
  • Press Space to download screenshot
  • Apart from the raster bars and lissajous curve all other demos can be interacted with via mouse
  • Open the browser console to see the (already transpiled) source code of all examples

Example #1: Scribble & color cycling
Hold down left mouse button to cycle the colors (the current palette is also always shown in bottom-left corner). Nice, powerful oldskool effect, which is actually easier to do with these indexed, non-RGB pixel buffers[1]

Example #2: Lissajous bobs
The spheres are actually 2x2 tiles of 8x8 pixel sprites with one color slot chosen as transparency. Drawing 100 spheres here, but could be a lot more...

Example #3: Raster bars
This oldskool effect is achieved via HSYNC interrupts only, i.e. no lines are being drawn — for every single pixel row we simply change the color value of the first palette entry. The text is also only being drawn once, at startup...

Example #4: Particle system
Simple particle system (2k particles) with the emitter position linked to the mouse. 6% probability for larger particles.

Example #5: Random pattern
Classic oldskool generative art, here by defining 4 custom bitmap font characters and then drawing a single randomly chosen char per frame

Example #6: Bitmap font editor
Select a character on the RHS to edit in the left box. Left click to set a pixel, right click to clear it. Press Delete to clear the char entirely. The system supports proportional width fonts and the little red triangle can be moved horizontally to adjust the width of each char... Clicking on the Save button will download a JSON file of the font's binary data (9 bytes per char: width + 8 data bytes)

toxi,
@toxi@mastodon.thi.ng avatar

@coldclimate Yeah, it's the famous SWEETIE16 palette from Lospec (which TIC80 also uses):

https://lospec.com/palette-list/sweetie-16

(Btw. Here's more context for this all. I forgot to post the above as thread/reply to: https://mastodon.thi.ng/@toxi/112327108956578591)

toxi, to genart
@toxi@mastodon.thi.ng avatar

In preparation for teaching a 3-day "Computing within limits" workshop @ University of Applied Sciences in Augsburg, almost exactly a year ago (next week) I created a little fantasy console (heavily inspirered by TIC80) to introduce students to:

  • the idea of virtual machines / computing environments
  • the freedom to design & control any aspect of that environment (and how this relates to the overall idea of personal computing these days)
  • designing & building a small (virtual) env from the bottom up (incl. defining opcodes, memory limits, maps/regions, device control registers, interrupts (hsync/vsync), device I/O, comms & multi-tasking possibilities, various retro-computing inspired graphics techniques)
  • defining a small low-level API/language for creative coding
  • learning about binary/hex and how that knowledge translates visually

The short video gives an overview of five small examples & tools (incl. a bitmap font editor) I had prepared for the workshop — the entire system was built within a couple of days with http://thi.ng/umbrella and incl. examples is only 12KB (gzipped). In the workshop we later ended up mostly using the TIC80 instead, since we covered quite a few other wider perma- & retro-computing related topics too... The 3 days were barely enough to provide an overview and have some exploration time...

If anyone is interested in a similar workshop, please do let me know, I'm keen to repeat it/extend it...

(Ps. I will post a link to the interactive version later too)

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

cc @danielrothaug :)

toxi,
@toxi@mastodon.thi.ng avatar

Just for future ref, connecting the dots here (was supposed to become a thread):

https://mastodon.thi.ng/@toxi/112328362733561019

toxi, to zig
@toxi@mastodon.thi.ng avatar

In another move[1] to stay up-to-date with latest version of Zig (v0.12.0), I've also updated all code (and .zig.zon depencency info) in the still-just-a-baby zig.thi.ng repo:

https://github.com/thi-ng/zig-thing

[1] Related (from yesterday): https://mastodon.thi.ng/@toxi/112314678085028074

#Zig #Ziglang #OpenSource #Maintenance

toxi, to github
@toxi@mastodon.thi.ng avatar

"Instead of generating the URL after a comment is posted, GitHub automatically generates the download link after you add the file to an unsaved comment, [...]. This allows threat actors to attach their malware to any repository without them knowing."

I always wondered if these attachments would stay around and if so for how long. Seems to be permanent, though (at least until this is going to be fixed)...

https://www.bleepingcomputer.com/news/security/gitlab-affected-by-github-style-cdn-flaw-allowing-malware-hosting/

#GitHub #GitLab #Malware #Infosec

toxi, to zig
@toxi@mastodon.thi.ng avatar

Just updated all https://thi.ng/wasm-api packages, bindgen, build scripts, readmes and examples to be compatible with the brand new Zig v0.12.0 released a couple of days ago... This includes adapting to breaking changes (esp. Zig's build system) and updating the hybrid Zig/WASM/TypeScript project template:

https://github.com/thi-ng/tpl-umbrella-zig

For wasm-api user code only minor changes are required (if any), e.g. all Zig DOM event handlers need a callconv(.C) attribute now...

Happy coding!

#ThingUmbrella #Zig #Ziglang #WASM #WebAssembly #TypeScript #JavaScript #OpenSource

made, to random German
@made@mastodon.gamedev.place avatar

Just sponsored @toxi for his huge efforts on the thi.ng library! 🎉
My 1st sponsorship. The project is super helpful for our commercial projects and it is the 1st time i made some profit from them besides the usual salary (after 5+ years?). So it is about time to give something of it back and i hope it will continue!

Going to share some examples where we use thi.ng soon and can tell a bit about my company. Might be refreshing for some, since it is bootstrapped and not VC-funded.

toxi,
@toxi@mastodon.thi.ng avatar

@made OMG — thank you, thank you! This really means a lot! Also super chuffed to hear about your (new?) company and looking forward to learn more how you've been using these libs (no pressure though)! 🙏

Ps. Great news to start the week! :)

toxi, to photography
@toxi@mastodon.thi.ng avatar

Walking the line/ridge toward Kellenspitze, Tannheimer Alps.

#SilentSunday #LandscapePhotography #Photography #Mountains #Alps #Hiking

toxi,
@toxi@mastodon.thi.ng avatar

@smallcircles @Esssie31 Thank you & you're right still snow up there (esp. after this past week) — this was August 2022, but I'm already counting down days/weeks to do a longer version of that tour again!

toxi,
@toxi@mastodon.thi.ng avatar

@smallcircles @Esssie31 Oh, have fun! If there'll be another cold spell like this past & next week (in many parts still quite a bit more snow coming), early June might be better/safer... FWIW we went down to the Dolomites beginning of June last year and it was mostly still like April (mainly just crocus and cowslip out)

toxi,
@toxi@mastodon.thi.ng avatar

Just learned that until 1854, the original name of that mountain was "Metzenarsch", which translates to "Whore's Ass", but was spontaneously renamed when pointing out different mountain peaks to the visiting queen of Bavaria... 😂

https://en.wikipedia.org/wiki/Kellenspitze

toxi,
@toxi@mastodon.thi.ng avatar

@croyle Indeed, this range is one of my fave parts of the Alps which isn't too far...

toxi,
@toxi@mastodon.thi.ng avatar

@croyle Oh, I'm thinking of this and pinching myself each time I'm out, but we also only moved here a few years ago. I do have very fond memories of hiking in the Sierra too (Ansel Adams Wilderness, back in the mid 90s) and think with its terrain, vegetation, colors and vastness it's maybe a more unique range than here, but then again, feeling similar about the Cascades/PNW in general and glad I got to explore it for a few years... the grass is just always greener elsewhere... :)

toxi, to FunctionalProgramming
@toxi@mastodon.thi.ng avatar

Phew... One key step closer to replicating & simplifying core https://thi.ng/rstream functionality via just standard async iterables: Just added a mult() base-operator to https://thi.ng/transducers-async [1] which allows splitting a single async iterable into multiple child async iterables (aka subscriptions, aka 1:N splitting), each of which can be added/removed dynamically and individually processed e.g. via transducers, vanilla for await() consumers, and/or used as input for downstream mult()s to construct entire graph topologies (cycles allowed) of async processors etc. Back pressure is handled by waiting for all child subscriptions to deliver the value before consuming a new one from the source...

[1] https://github.com/thi-ng/umbrella/blob/develop/packages/transducers-async/src/mult.ts

#ThingUmbrella #Async #Transducers #ReactiveProgramming #FunctionalProgramming #TypeScript #JavaScript

toxi, (edited ) to hiking
@toxi@mastodon.thi.ng avatar

As promised, some short (1:23min) phone video impressions from Sunday's varied hike in the beautiful Ester Mountains[1] (mainly filmed during descent only, since the steep way up was mostly without any grand views)

[1] https://en.wikipedia.org/wiki/Ester_Mountains

toxi,
@toxi@mastodon.thi.ng avatar

@hikingdude Thank you! :) Next time taking a proper camera, though...

toxi, to photography
@toxi@mastodon.thi.ng avatar

Pustertal. Just returned... such a stunning valley & hike (the 800 hm were harder than expected today!) Will post more impressions soon...

#SilentSunday #LandscapePhotography #Photography #Alps #Mountains #Hiking

toxi,
@toxi@mastodon.thi.ng avatar

@borisanthony Wow, still so much snow!? Have fun in Japan!

toxi, to typescript
@toxi@mastodon.thi.ng avatar

For @made and others who might have questions about the new https://thi.ng/transducers-async library, I've tried to illuminate the behind-the-scenes approach over here:

https://github.com/thi-ng/umbrella/discussions/461#discussioncomment-9102966

toxi, to random
@toxi@mastodon.thi.ng avatar

"Every probabilistic algorithm that's efficient can be replaced by a deterministic one, so you don't really need [randomness] [...] The power believed to be in probabilistic algorithms doesn't exist." — Avi Wigderson

(Think on this, fellow generative artists! 😅 FWIW In my own work, I've learned to limit use of PRNGs to the absolute bare minimum, use as shorthand or for deferring design decisions to be solved in other [more controllable/intentional] ways later on...)

https://arstechnica.com/science/2024/04/computer-scientist-wins-turing-award-for-seminal-work-on-randomness/

toxi, to genart
@toxi@mastodon.thi.ng avatar
toxi, (edited ) to genart
@toxi@mastodon.thi.ng avatar

Been slacking posting more art here, so time for a teensy selection of an old generative/evolutionary system from 2014 (then used for my HOLO 2 magazine guest design). Originally written in Clojure, meanwhile ported to TypeScript & Zig, I've kept working on & experimenting with it ever since... 1000s of screenshots and 100s of versions to sift through. Loosely based on research done by Barricelli[1] since the early 1950s, conceptually and aesthetically it sits nicely between my C-SCAPE and De/Frag and has a similarly huge design space to explore (in some versions coupled with genetic programming to evolve cell replication rules)... There's a 1500 word draft blog post from back then too, which goes into more detail and history of this approach. Maybe its time to publish that one too at last... :)

[1] https://www.tim-taylor.com/assets/docs/barricelli-suggestions-for-starting-theoretic-papers-6-6-1987.pdf

toxi,
@toxi@mastodon.thi.ng avatar

@n_senz_ Oh wow, I'm honored! :) I did the same (using one of the Sunflow-rendered semi-3D versions)...

toxi, (edited ) to typescript
@toxi@mastodon.thi.ng avatar

Announcing , small code snippets illustrating useful patterns and use cases for various libraries/projects in the https://thi.ng ecosystem/anti-framework...

:
Build a FPS counter with moving average w/ https://thi.ng/transducers

Source code in alt text

(Ps. Have been trying to start similar stuff in the past on the birdsite, but let's see if I can control my attention and be more consistent this time... If you have any topic requests, please reply below [or via DM])

toxi,
@toxi@mastodon.thi.ng avatar

@rgb Thanks, Ralf! You're only about 8 months late since the beginning of this series... 😅 You can find the whole list of 30 posts here:

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

...and a little epilogue here:

https://mastodon.thi.ng/@toxi/111348591236791838

#HowToThing #ThingUmbrella #TypeScript #JavaScript #Tutorial

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • ngwrru68w68
  • everett
  • InstantRegret
  • magazineikmin
  • thenastyranch
  • rosin
  • cubers
  • Durango
  • Youngstown
  • slotface
  • khanakhh
  • kavyap
  • DreamBathrooms
  • anitta
  • ethstaker
  • osvaldo12
  • modclub
  • GTA5RPClips
  • tester
  • mdbf
  • tacticalgear
  • cisconetworking
  • normalnudes
  • Leos
  • megavids
  • provamag3
  • lostlight
  • All magazines