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:

264
active users

#transducers

0 posts0 participants0 posts today
Karsten Schmidt<p>Added a new convenience transducer for clipping and binning values, e.g. as preparation step for histogram generation whilst working in the REPL. New release forthcoming. A small code example attached (actually taken from the doc string of the new `binned()` transducer).</p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/FunctionalProgramming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FunctionalProgramming</span></a> <a href="https://mastodon.thi.ng/tags/ASCIIArt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ASCIIArt</span></a> <a href="https://mastodon.thi.ng/tags/DataViz" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataViz</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p>Someone asked for help on an interesting transducers (functional programming) problem. My initial answer using other existing transducers still had some minor differences to their intended behavior, but writing a small custom transducer then saves the day and now I can already think of a bunch of other uses for it too:</p><p>Attempt #1:<br><a href="https://github.com/thi-ng/umbrella/issues/490#issuecomment-2296276833" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/iss</span><span class="invisible">ues/490#issuecomment-2296276833</span></a></p><p>Attempt #2 (custom transducer):<br><a href="https://github.com/thi-ng/umbrella/issues/490#issuecomment-2296349604" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/iss</span><span class="invisible">ues/490#issuecomment-2296349604</span></a></p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/FunctionalProgramming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FunctionalProgramming</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a></p>
Karsten Schmidt<p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/ReleaseFriday" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ReleaseFriday</span></a>[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: <a href="https://thi.ng/transducers-async" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/transducers-async</span><span class="invisible"></span></a>, <a href="https://thi.ng/rstream" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/rstream</span><span class="invisible"></span></a>, <a href="https://thi.ng/csp" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/csp</span><span class="invisible"></span></a>, <a href="https://thi.ng/fibers" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/fibers</span><span class="invisible"></span></a>, and partially related, <a href="https://thi.ng/rdom" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/rdom</span><span class="invisible"></span></a> 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 &amp; functionality (via different means), which I'm slowly consolidating where it makes sense...</p><p>Part of this pretty large undertaking has been a complete rewrite of the temporarily deprecated <a href="https://thi.ng/csp" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/csp</span><span class="invisible"></span></a> package for Communicating Sequential Processes[2] (IMHO one of the most elegant &amp; 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 <a href="https://thi.ng/transducers-async" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/transducers-async</span><span class="invisible"></span></a> and/or non-async <a href="https://thi.ng/transducers" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/transducers</span><span class="invisible"></span></a> 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:</p><p>Demo:<br><a href="https://demo.thi.ng/umbrella/csp-bus/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">demo.thi.ng/umbrella/csp-bus/</span><span class="invisible"></span></a></p><p>Source:<br><a href="https://github.com/thi-ng/umbrella/blob/develop/examples/csp-bus/src/events.ts" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/blo</span><span class="invisible">b/develop/examples/csp-bus/src/events.ts</span></a></p><p>Hand in hand with these major changes are smaller and still ongoing updates to <a href="https://thi.ng/rdom" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/rdom</span><span class="invisible"></span></a>, 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 <a href="https://thi.ng/rstream" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/rstream</span><span class="invisible"></span></a> 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).</p><p>Unrelated, but also part of this week's release: The new version of <a href="https://thi.ng/meta-css" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/meta-css</span><span class="invisible"></span></a> includes support for CSS `light-dark()`. The base framework now includes ~950 utilities &amp; 70 functions. See readme for full list...</p><p>Happy coding! :)</p><p>[1] There're actually a lot more frequent release, but these days I'm only mentioning the more notable ones to not spam everyone...</p><p>[2] <a href="https://en.wikipedia.org/wiki/Communicating_sequential_processes" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">en.wikipedia.org/wiki/Communic</span><span class="invisible">ating_sequential_processes</span></a></p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/CSP" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSP</span></a> <a href="https://mastodon.thi.ng/tags/Async" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Async</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/Reactive" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Reactive</span></a> <a href="https://mastodon.thi.ng/tags/UI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UI</span></a> <a href="https://mastodon.thi.ng/tags/DOM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DOM</span></a> <a href="https://mastodon.thi.ng/tags/CSS" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSS</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a></p>
Karsten Schmidt<p>Phew... One key step closer to replicating &amp; simplifying core <a href="https://thi.ng/rstream" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/rstream</span><span class="invisible"></span></a> functionality via just standard async iterables: Just added a `mult()` base-operator to <a href="https://thi.ng/transducers-async" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/transducers-async</span><span class="invisible"></span></a> [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...</p><p>[1] <a href="https://github.com/thi-ng/umbrella/blob/develop/packages/transducers-async/src/mult.ts" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/blo</span><span class="invisible">b/develop/packages/transducers-async/src/mult.ts</span></a></p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/Async" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Async</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/ReactiveProgramming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ReactiveProgramming</span></a> <a href="https://mastodon.thi.ng/tags/FunctionalProgramming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FunctionalProgramming</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p>For <span class="h-card" translate="no"><a href="https://mastodon.gamedev.place/@made" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>made</span></a></span> and others who might have questions about the new <a href="https://thi.ng/transducers-async" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/transducers-async</span><span class="invisible"></span></a> library, I've tried to illuminate the behind-the-scenes approach over here:</p><p><a href="https://github.com/thi-ng/umbrella/discussions/461#discussioncomment-9102966" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/dis</span><span class="invisible">cussions/461#discussioncomment-9102966</span></a></p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/Async" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Async</span></a> <a href="https://mastodon.thi.ng/tags/Generators" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Generators</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/FunctionalProgramming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FunctionalProgramming</span></a></p>
Karsten Schmidt<p>Sorry for recent silence, if I can summarize most of my past two weeks or so:</p><p>"Async all the thi.ngs, what colud posibsyl og wrngo!" [1]</p><p>1) New package <a href="https://thi.ng/transducers-async" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/transducers-async</span><span class="invisible"></span></a> (restarted development after originally stopping it in 2018 due to lack of async iterable support)<br>2) Updates to <a href="https://thi.ng/rstream" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/rstream</span><span class="invisible"></span></a> (adapters from/to async iterables)<br>3) Upcoming, a new &amp; simplified implementation of <a href="https://thi.ng/csp" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/csp</span><span class="invisible"></span></a> (currently still only on a feature branch[2]) for building blocks for Communicating Sequential Processes.<br>4) Also still WIP only, async iterable support for <a href="https://thi.ng/rdom" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/rdom</span><span class="invisible"></span></a>, i.e. in the same way as rstream subscriptions, such async iterables can soon be directly embedded as component/element bodies or attribute values and then perform pinpointed DOM updates each time their value changes...</p><p>As I said, async all the thi.ngs...</p><p>[1] h/t <span class="h-card" translate="no"><a href="https://mastodon.gamedev.place/@sjb3d" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>sjb3d</span></a></span> for an ancient tweet with a similar sentiment &amp; outcome :)</p><p>[2] The CSP package too was somewhat deprecated (for similar reasons) and a while ago I added another alternative CSP implementation via <a href="https://thi.ng/fibers" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/fibers</span><span class="invisible"></span></a>, but that package too might see some more refactoring/simplifying by switching to async generators...</p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/Async" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Async</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/OpenSource" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>OpenSource</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a></p>
Karsten Schmidt<p><a href="https://mastodon.thi.ng/tags/HowToThing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>HowToThing</span></a> #008 — CSV parsing &amp; filtering into structured data via <a href="https://thi.ng/csv" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/csv</span><span class="invisible"></span></a> and creating a multi-plot data visualization via <a href="https://thi.ng/viz" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/viz</span><span class="invisible"></span></a> (along with a range of other helpful packages for various side aspects).</p><p>The attached visualization shows a lin-log plot of new COVID cases between March 2020 - Dec 2021:</p><p>- Daily world total as line plot<br>- UK (red) and USA (blue) cases as interleaved bar plots</p><p>(All data from: <a href="https://ourworldindata.org/coronavirus" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">ourworldindata.org/coronavirus</span><span class="invisible"></span></a>)</p><p>Full source code:<br><a href="https://gist.github.com/postspectacular/6a379a2bb8cd46e242163b9c9563522f" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gist.github.com/postspectacula</span><span class="invisible">r/6a379a2bb8cd46e242163b9c9563522f</span></a></p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/DataViz" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataViz</span></a> <a href="https://mastodon.thi.ng/tags/CSV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>CSV</span></a> <a href="https://mastodon.thi.ng/tags/SVG" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SVG</span></a> <a href="https://mastodon.thi.ng/tags/Tutorial" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Tutorial</span></a></p>
Karsten Schmidt<p><a href="https://mastodon.thi.ng/tags/HowToThing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>HowToThing</span></a> #003 Tracking multiple key states and extracting high-level commands from key sequences via <a href="https://thi.ng/rstream" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/rstream</span><span class="invisible"></span></a> &amp; <a href="http://thi.ng/transducers-fsm" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">http://</span><span class="">thi.ng/transducers-fsm</span><span class="invisible"></span></a>. The key sequences are stored as a trie and matched via a transducer-based finite state machine.</p><p>Btw. The new example #125 of the <a href="https://thi.ng/umbrella" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/umbrella</span><span class="invisible"></span></a> monorepo shows an extended version of this approach...</p><p>Demo:<br><a href="https://demo.thi.ng/umbrella/rdom-key-sequences/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">demo.thi.ng/umbrella/rdom-key-</span><span class="invisible">sequences/</span></a></p><p>Source:<br><a href="https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-key-sequences" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/tre</span><span class="invisible">e/develop/examples/rdom-key-sequences</span></a></p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/FSM" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FSM</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/Tutorial" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Tutorial</span></a></p>
Karsten Schmidt<p>Announcing <a href="https://mastodon.thi.ng/tags/HowToThing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>HowToThing</span></a>, small code snippets illustrating useful patterns and use cases for various libraries/projects in the <a href="https://thi.ng" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng</span><span class="invisible"></span></a> ecosystem/anti-framework...</p><p><a href="https://mastodon.thi.ng/tags/HowToThing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>HowToThing</span></a> #001:<br>Build a FPS counter with moving average w/ <a href="https://thi.ng/transducers" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">thi.ng/transducers</span><span class="invisible"></span></a></p><p>Source code in alt text</p><p>(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])</p><p><a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> <a href="https://mastodon.thi.ng/tags/TypeScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TypeScript</span></a> <a href="https://mastodon.thi.ng/tags/JavaScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>JavaScript</span></a> <a href="https://mastodon.thi.ng/tags/FunctionalProgramming" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>FunctionalProgramming</span></a> <a href="https://mastodon.thi.ng/tags/Transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Transducers</span></a> <a href="https://mastodon.thi.ng/tags/Tutorial" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Tutorial</span></a></p>
Karsten Schmidt<p>Thank you all who joined the <a href="https://mastodon.thi.ng/tags/ThingUmbrella" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ThingUmbrella</span></a> stream earlier! 🙇 Hope it was worth your time! Also, if you want to see another example of <a href="https://mastodon.thi.ng/tags/transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>transducers</span></a> usage, look at <span class="h-card"><a href="https://post.lurk.org/@BITPRINT" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>BITPRINT</span></a></span>'s grid iterator <a href="https://mastodon.thi.ng/tags/p5js" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>p5js</span></a> sketch and the refactoring I've done...</p><p><a href="https://github.com/thi-ng/umbrella/discussions/393#discussioncomment-5537615" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/thi-ng/umbrella/dis</span><span class="invisible">cussions/393#discussioncomment-5537615</span></a></p>
jpburstrom<p>So, here's my <a href="https://post.lurk.org/tags/introduction" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>introduction</span></a>: Composer and improvising musician, seasonal programmer, occasional (involuntary) builder, wannabe researcher, making sounds with <a href="https://post.lurk.org/tags/feedback" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>feedback</span></a> <a href="https://post.lurk.org/tags/doublebass" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>doublebass</span></a>, <a href="https://post.lurk.org/tags/transducers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>transducers</span></a>, <a href="https://post.lurk.org/tags/bela" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>bela</span></a> and <a href="https://post.lurk.org/tags/supercollider" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>supercollider</span></a>. </p><p>Made music and sound with and for dancers, moving images, empty rooms, various speaker setups, generative albums, NES emulators and head-nodding audiences.</p><p>Swedish dad.</p>