Hacker News new | past | comments | ask | show | jobs | submit login
The GPU Banana Stand (acko.net)
166 points by robin_reala on Aug 22, 2022 | hide | past | favorite | 60 comments



Steven made the Whacko AVS packs for Winamp back in the day under the name UnConeD, which were easily the most impressive visualizations I ever saw in AVS.

He has them all for download on the website[1].

You could always see the source code, and I remember as a teenager trying to pick them apart to see how they worked. It seemed so much more advanced than what everyone else was doing. Other packs would have pretty waveforms. Whacko AVS had, as just one example, a spaceship flying through hyperspace in a storm - and it still reacted to the music!

Justin Frankel, the creator of AVS (and Winamp itself), now makes Reaper, one of the world's best DAWs.

[1] https://acko.net/blog/avs/


Just in case it helps anyone else struggling to understand this comment (let alone the blog post)

AVS was an addin for WinAmp, a Windows MP3 player app.

AVS stands for "Advanced Visualization Studio".

More info on [Wikipedia](https://en.wikipedia.org/wiki/Advanced_Visualization_Studio) but it seemed to be plugin that supported other plugins that in turn did fancy graphical "visualisations" (moving screensaver-like visual effects) based (?) on the currently-playing music.

Since the site has gone and the new Winamp site is content-free chrome, it's hard to say more.

AVS was made FOSS in 2005: https://web.archive.org/web/20051102072333/http://www.nullso...

"DAW" means Digital Audio Workstation but honestly even the Wikipedia articles are so full of references that one is assumed to already know that I am not sure what the phrase means. As far as I can glean, a very fancy sound editor program.


If anyone could ELI5 the whole web link in the style of my comment above, I'd really appreciate it, because I am curious but I can get nothing at all out of it. I do not really understand any of it.

WebGPU? Reactive? Declarative?

It's... some kind of Javascript thing (?) that lets you program (?)... fancy animated (?) graphics (?) in a web page (?) that are hardware accelerated?

That is about all I can get, and I don't think I am all that dim.

I got the Arrested Development reference, and almost nothing else.


That's pretty much the gist. I don't know much more than you, anyone else feel free to correct me.

This guy made a Javascript library running on WebGPU (an upcoming web GPU wrapper) that uses the coding style popularized by React.

React was designed to make it easy(-ish) to dynamically update web pages. When data or properties are changed in the JS code, React updates the DOM (HTML that tells the browser what to draw on screen). That's reactive.

Declarative is how it's organized. To change what shows up on screen, there has to be some kind of update loop that checks for/reacts to (pull/push) new data. React hides all that, the idea is you declare what you want drawn once, and it's updated for you as the data changes.

React stays efficient by only updating what needs to be updated in the DOM. This gets a similar result by memoizing (caching function return values) (for what data??).

Editorializing from my experience with web frameworks, that style feels magical when it works, and makes for flashy demos (look what I can do with 10 lines of code!), but it gets there by hiding a lot of complexity inside an opinionated framework. It's way easier to get started with, but you have to be disciplined and know how it works under the hood to stay on the happy path with larger projects.


Thanks! That really does help. The world of Javascript is a largely closed book to me, and I think I like it that way. Opening it is unlikely to bring me much happiness.


Hi, sorry yeah DAW a.k.a. Digital Audio Workstation is just a fancy name for audio recording and mixing software. A bit like an old control room with mixing desk and tape machine and outboard audio hardware, but all on a PC in software.

Other examples are Pro Tools, Ableton Live, Ardour, Cubase etc.

Thanks for explaining the rest. My comment was very targeted at people who might have already used Winamp and AVS 20 years ago.

----

One funny thing - even though the Winamp website is long gone and changed completely, the original forums are still running: http://forums.winamp.com

They're up to nearly two million posts. Many people there have been posting for two decades.


Thanks!

Re the forums -- I think I recall a comic about this phenomenon. I thought it was an XKCD, but I can't find it. Product forums that keep on going, decades after the product ceased to exist, all hanging by the thread that somebody, somewhere forgot to cancel the payment for web hosting...


I'm pretty sure the XKCD comic you're thinking of was originally inspired by the hidden Starship Titanic "employee forum", which is a great story in itself. There's some info here: https://kotaku.com/the-secret-douglas-adams-rpg-people-have-...


That's it! Well remembered!


Cthugha did similar on Linux. Many hours were spent 'watching music'. Even in a sober state it was amazing.

https://en.wikipedia.org/wiki/Cthugha_(software)


[flagged]


I don't know him, so I took a quick look. It looks like he was against some of the mandatory COVID measures. I don't really understand the point of you trying to call out his politics here. It's not the topic at-hand, and his views are hardly outside the mainstream, and at a first glance don't seem to be hateful or bigoted. So can't we just stick to the topic, and agree to disagree instead of trying to wholesale imply this guy holds "sus" (i.e. "not acceptable") views?


Sus doesn't mean "not acceptable".

Anyway, "against some mandatory measures" is an understatement. He's literally an antivaxxer and it's not just about COVID. E.g.: https://twitter.com/unconed/status/1558063608772366337

You don't have to go far back in his Twitter timeline to also see him bashing the trans movement, green energy and Ukraine. He's definitely hateful and bigoted.

Notch was cancelled for less.


Depending on what you mean by bashing the trans movement, almost half the coworkers and neighbors I know talk about US backed bio warfare labs and how Putin was justified in his attack, how the vaccines sterilized Taiwan, and the election was stolen. They also typically say something like "I don't care what adults get up to, but letting kids make permanent body modifications before they can drive is wrong" I can't cancel almost half the people I know outside my friend circle. Some of them are family. These people span working class to PHDs in hard science from top tier schools, and backgrounds of midwest evangelical Christian to fertile crescent Muslims to west coast atheists, and I don't have a theory about what line of thought they all followed to get where they are. I try to have calm conversations with them when I can, but there is always some anxiety there, I suspect they don't talk about that stuff unless they think people are like them, and when they realize I have a multidimensional political spectrum they get nervous. At least at work I try to engage with them only on the merits of their work. I think we can do that with creator's like this, but I also don't want my money funding hate groups, so there is a line. I suspect in progressive environments people with these viewpoints are pretty quiet. I've bumped into them in fairly progressive cities as uber drivers or ML researchers. The "silent majority" is no longer a majority, but they aren't just a handful either, and their views have shifted.


> The "silent majority" is no longer a majority

Maybe, but they were never silent.


Having had a look at his twitter, i rate this situation 220 milliurbits.


So? Who cares. Just because he is a thinking and breathing human being with a pulse and a different view than you. How many times have you made the front page of a prolific website? That’s like me telling the world — you, based off one comment sampling that you are stuck up and one dimensional …. Which we both know isn’t true, right? Benefit of the doubt.


"Different view" is a nice way of putting it. He's literally an alt-right troll.


And how does that change anything else he says?

It doesn't. Thats also not how "literally" works either. Your commentary surely tells the reader to use caution, but not how you think it does.


He's not untouchable just because he's writes a good technical article. He should be called out for spewing hateful bigotry on his Twitter.


Maybe for you. But not for me or others. Careful where you stick your nose.


> How many times have you made the front page of a prolific website?

Tabloid papers have been on the front page here. I wouldn’t it hold it in such high honors.


> Tabloid papers have been on the front page here. I wouldn’t it hold it in such high honors.

Who said anything about honor. Its attention which gets things changed or noticed or something otherwise. These one-dimensional, judgey comments are forgettable.


> These one-dimensional, judgey comments are forgettable.

Agreed. This is the laziest most boring snipe you could make:

> How many times have you made the front page of a prolific website?


And yet you are on round two of responses to it.


Or https://twitter.com/unconed for the full experience. I used to follow him for gfx stuff, until he lost his marbles during covid. The world at large has moved on with their life but from a cursory scroll he's still living in 2020.


He is literally citing Chomsky on manufactured consent in the top tweet.

The world has indeed moved on, because according to the consent Covid is now magically over in 2022, so now we are supposed to worry about the latest manufactured crises like Taiwan etc.


He worries plenty about the latest and not-so-latest manufactured crises, as it's all he tweets about nowadays, is my point.


I'd really really like to see 3d content start making it's way into the DOM. (Ideally in manners far far far far beyond showing one lone hovering item, as per Apple's <model> proposal.)

Seeing Steven use his Live library to provide such an implementation should be utterly unsurprising. His past works have been so exemplary & leading-edge: mathbox, TermKit, Live itself, & others. Live was an interesting exploration of what grounds really lay underfoot the latest emerged React patterns (hooks), with lots of new capabilities, and seeing it applied to such a holy grail of an idea (3d via dom) is thrilling to see.

> Live goes far beyond the usual React semantics, introducing continuations, tree reductions, captures, and more

There's a ton of incredible wonkery here. As usual for Steven, he's chased incredibly far reaching frontiers, applying this hyper-advanced computing toolkit to 3d, then hunting down a series of hard problems/demos to make expident work out of. The article talks to a lot of specific frontiers, but the "general" work of the underlying Live library (and it's tour-de-force proof-of-value by creating Use.GPU out of it) is quite the distillation of computing into a consolidated, clear form:

> The result is a tree of functions which is simultaneously: 1. an execution trace 2. the application state 3. a dependency graph of that state

Hardly the point, but one thing I'd like a little more affirmative on, to see more clearly- where my desires & Steven's intents might be mis-aligned is- what would it look like rendering environments & spaces here? Can this "dsl for dsls" help us craft landscapes, houses, & actors inside? What do situated spaces look like in this environment, if we can pull that off? Can we represent space in the DOM?


Have you seen what react-three-fiber is doing?

https://docs.pmnd.rs/react-three-fiber/getting-started/examp...

https://twitter.com/0xca0a (the creator, who has some examples as well)


Good example!

I was trying to use A-frame a bit back, another contender. https://aframe.io/ Somewhat ashamed to admit, I fell on my face a couple times trying to get the legacy cjs modules building with a couple toolchains & put my 3d web projects back in deep-freeze. https://github.com/aframevr/aframe/issues/3732

Briefly, it does make me a bit sad that React isn't the real dom. I doubt very much any of these solutions make the content actually available in view-source. Which, like, 10 years ago would get you 20 lashings for bad behavior. Now-a-days? Normal, react & elsewhere. Un-page content is anti-user.


The problem imho is bandwidth. Unless you are iq or similar, creating geometry and textures from thin-air with pure math is just not possible, so you need to load 3d models, which are much heavier than their html/png counterparts.

For individual models, like if you browse sketchfab, it's not such a big deal if the artist optimized things to be "game-ready", but for full environments, it's a problem, especially as audience expectations are influenced by what they see with multi-gigabyte assets on standalone games and simulations.

I don't think this is a complete showstopper, like 10-20 years ago we had the same problem with 2d games and Flash, but as long as the experience was compelling enough and the preloader wasn't completely boring, people waited, but there has been a shift towards wanting things to be instantaneous on the web (e.g. video with adaptive bitrate switching, blurry but instant > sharp but buffered)

Anyway, I guess my point is I don't think it's exactly a technical limitation of programming, as much as a conflict between audience expectations and wait time


Signed distance fields _are not that bad_ (thank you Inigo Quilez)

Once you have your primitives, it becomes basic math and union, subtraction, intersection for the most part.

I made this shader a few days after learning the basics -> https://twitter.com/LeapJosh/status/1494417750395179012

If glsl ever got function pointers or similar, you'd see simple SDF DSLs and frameworks bloom overnight and many of them would be easy and awesome.


Raymarching ever-more-complex mathematical functions is neat if you're creating a demo out of curiosity or for art's sake.

But it's a very expensive and not-very-scalable method of rendering things, certainly not a replacement for meshes of triangles.


Shameless plug - I wrote sdf-csg[1] as an attempt to have that cake and eat it too. Basically, build things out of SDFs, then create meshes out of them for efficient rendering.

[1] https://github.com/wwwtyro/sdf-csg


This is very cool. I wish I could use it in unity!

Going to take a few minutes to scope out what a port would take...


Check out Fuse[1][2], it also has a SDF to mesh feature and since it is based on Stride[3] (C#) it might be easier to port.

[1] https://github.com/TheFuseLab/VL.Fuse

[2] https://www.thefuselab.io

[3] https://www.stride3d.net


Fair point.. and the response is also right on. I'd edit my original comment to say "...creating full interactive scenes of geometry and textures..." if I could :)


"Unless you are iq or similar" => it's actually quite accessible if you dive into it. This Pouët thread is a nice starting point: https://www.pouet.net/topic.php?which=7920&page=1. Also: https://www.pouet.net/topic.php?which=7931&page=1


Browsers are resource hogs, I'm not sure I'd want any 3D content more than is necessary. CSS alone is capable of hogging my CPU at 100%


Not just that: few people are Steve Wittens or Farbrausch vetted, most are bewilderingly contented with the ugly and deformed. Even among professionals, and with decades long evidence. See for example the adoption of 3d in online maps, that brought from "good as expected" to "utterly unwatchable, unusable" (and it is fortunate that you can still access the past versions). And that is the big 'G', with nobody able to note, "look - and do look -, this is an unacceptable result".

Normally you need good illustrators and artists: with some approaches you need much better illustrators, artists and taste.

Related: a few weeks ago StackOverflow came out with a visual filter that made the page psychedelic, in the wrongest way. ...As a feature.


I didn't notice any psychedelic filter? Where can I see it?


Most consumer machines have a literal supercomputer sitting mostly idle as you browse the web. Css is slow because it was designed for cpus and css doesn't map to gpus very cleanly. But Webgl/webgpu enable some incredible things.


> Can we represent space in the DOM?

Why would you want to represent this in DOM, of all places? It's uniquely unsuited for anything that's not a few paragraphs of text with a few images.


But representing the DOM etc inside a 3D space is useful so you don't loose access to the world of 2D information. However there are no good solutions to this at present the Immersive Web Workgroup in W3C are looking at Layers or DOM Overlay which is for AR modes but might support 2D navigation but it seems low down on the priority list due to CORS and other security challenges.

https://github.com/immersive-web/navigation


hoisting divs as hud works nicely already, both in ios (webxr viewer) and android (chrome + google play services for ar)

you just need a div directly below body, then you can actually enable it as a hud in augmented reality.

at the moment we only use it to show announcements to the visitors, but i also have tested buttons with event listeners attached and you can even console.log from there.

html

  <html>
    <body>
      <canvas id="three-canvas"></canvas>
      <div id="hud">
        <button>Will be visible in ar</button>
      </div>
    </body>
  </html>

js

  const xrSession = await window.navigator.xr.requestSession('immersive-ar', {
    // ...requiredFeatures,
    domOverlay: {
      root: $('#hud'),
    },
  })

css

  #three-canvas {
    z-index: 999;
  }
  #hud {
    z-index: 1000;
  }
edit: use window.navigator instead of W.NAV, my custom "window" global.


> Why would you want to represent this in DOM, of all places? It's uniquely unsuited for anything that's not a few paragraphs of text with a few images.

Your negative bias is showing. That's, just, like, your opinion man. One built around disdain & dislike, and not generally shared. There's no books that publish that opinion. You don't find that limited view abundant in trade publications.

Use.GPU is here to enable 3D via the DOM, and is proof positive that this declarative setup is highly powerful. The heirarchical/acyclic-graph structure more than passingly resembles a scene-graph, which is ultra-common in 3d. Since the hierarchy is apparent, bindings all just work:

> The shader snippets will end up inlined in the right places with all the right bindings, so you can just go nuts.

This is just Use.GPU. It's a huge step up the vast amounts of rote work required to set up bindings in modern vulkan & 3d in general. Barely the tip of the ice-berg. As I said, Use.GPU is a tour-de-force demonstration of the value of Live, which is a much more general & competent way of representing compute on the DOM. Steven calls Live a DSL for DSLs; a small language which can keep representing more, all with common structure & form of the DOM language underneath, a much higher level base for computing that escapes much reinvention along the way. Steven touches numerous times across Live write-ups & this article about how the shape of the DOM is ultra-close to that of Lisp, another blissfully homoiconic computing representation known for it's flexible means of assembling compute.

> Along the way Live has gained actual bona-fide <Quote> and <Unquote> operators, to drive this recursive <Reconcile>. This means Use.GPU now neatly sidesteps Greenspun's law by containing a complete and well-specified version of a Lisp. Score

I think it's under-ambitious to stop at just Space, and that the DOM's S-exp like nature is a powerful & advanced tool for representing all manners of things. Outside of Steven's work, there's plenty of other material. Work like React-Router are extremely clear & direct means of expressing routing/addressability concerns, far cleaner than any other toolkit I've seen. I invite everyone to keep an open mind, and try to use their brain to escape the limited preconceptions they already know, & to explore openly & with active regard, looking for potential. I think the potential for the DOM is high.


> I'd really really like to see 3d content start making it's way into the DOM.

There's a lot of overlap w/ HTML5-native game development. If you're interested in that, pay https://github.com/hmans a visit and take a look at his projects (RenderComposer, ShaderComposer, VFXComposer etc.). Nothing short of amazing!


This reminds me of react-three-fiber[1], which is built on top of Three.js.

react-three-fiber is a really nice way to build 3-d scenes on the web for those of us who aren't skilled in graphics and GPU programming.

Looks like Three.js supports WebGPU rendering now. Naively, I wonder how performance differs between UseGPU and R3F with Three's WebGPU renderer.

[1]: https://github.com/pmndrs/react-three-fiber


If you're into R3F, check out what https://github.com/hmans is doing on top of it (RenderComposer, ShaderComposer, VFXComposer etc.). Black magic!


> ...the same way that there was money in that banana stand. I don't know how to be any clearer than this.

I have a feeling that this is a joke that’s either extremely clever or a reference I have not been exposed to. Can anyone help me out?


(spoilers, I highly recommend Arrested Development - there's only a few seasons and it's very funny. So if you want to see the payoff of the joke live and unspoiled, skip my comment and watch the show)

It's a running joke from Arrested Development - a comedy about a family running a property empire that was heavily involved on fraud and in the process of collapsing. The (jailed) patriarch of the family - George Bluth - made some seemingly off-hand references to a frozen banana stand the family still operated - saying "There's always money in the banana stand". These were misunderstood as meaning "The banana stand still makes some money" and dismissed, when they were meant to mean "I have hidden $250,000 in the walls of the banana stand"


Major Spoilers

The show’s main protagonist, Michael, burns down the banana stand as a symbol of no longer putting up with his father’s influence. His father then told him of the cash in the walls of the banana stand.

Highly recommend the show.


It's a reference to the second episode of the TV show Arrested Development. A recurring line about a boardwalk stall the company owns: "There's always money in the Banana Stand."


If you copy paste the quote you pasted here into Google instead you'll find it's a meme from Arrested Development.


Love this blog, I get the "Dat Parallax" achievement every time I visit :D


I don't really see the point of making something so low level accessible from HTML. Or maybe I underestimate how much React made people love using declarative/reactive programming for everything ?

React and Vue integration of ThreeJS or BabylonJS seems more suitable for people wanting to simply add some 3D things to their page using DOM elements and the react/vue syntax.

But this project is still really cool ! Maybe I'm just old and it will find a great user base.


It's not really HTML, it's JSX. Like in all other JSX-based projects it gets compiled into js functions.


Rarely have I been so quick to bookmark a page. This is inspired. Bravo.


My Atom Z3745 really does not like that link.


I’m gonna come back and read this more thoroughly, I’m leaving this comment so I make sure I do: I think this is the best example of JSX as a malleable DSL I’ve encountered. Not because it’s any more novel than several other JSX use cases, but because it explicitly articulates why it’s so adaptable. Particularly likening it to lisp, which I think many people partial to it recognize but seldom say directly.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: