922 karma · joined October 23, 2011
I've been wondering for a while now if this will lead to an unexpected boon: perhaps people will be forced to pay attention to a speaker's content instead of simply who is speaking.
Could even make both halves mobile so that I can use each one as an independent mouse.
That's a great write up. I used this approach: https://wwwtyro.net/2019/11/18/instanced-lines.html
I built CandyGraph a few months ago to scratch an itch and never really got around to talking about it, but it's starting to get some use now, so here it is: https://github.com/wwwtyro/candygraph
I wanted a plotting library that was designed to not only plot a zillion points very fast, but also deal with changes to the presentation of that data at interactive framerates. If I zoomed in on the plot, for example, I wanted the axes to update fast enough that I wouldn't have to worry about the hit. If I changed an axis from linear to log, the rendered data would update immediately; I didn't want the CPU to churn through a million data points and ship them to the GPU again before it rerendered.
So CandyGraph was born. It adopts D3's elegant concept of scales, but it implements them on both the CPU and GPU. When data is rendered, the scaling takes place in the vertex shader. Changing a scale wont cause a missed frame.
On top of scales sits coordinate systems, also implemented for the CPU and GPU. These combine multiple scales into a system capable of dealing with 2D points. It has cartesian and polar coordinate systems, currently.
It renders everything on the GPU, even axes and text. No need to overlay your speedy WebGL plot with an SVG or another canvas for your axis rendering, and no need to take a perf hit for doing so. And of course, the data rendering itself is speedy; it's all instanced by default.
Finally, CandyGraph comes with a small but growing collection of optimized primitives and higher-level objects to simplify common plotting tasks.
If this sounds like it might scratch your itch, check out the tutorial and examples: https://wwwtyro.github.io/candygraph/tutorial/dist/ https://wwwtyro.github.io/candygraph/examples/dist/
CandyGraph is built on top of the embarassingly good regl library. CandyGraph is in major version zero, but it's usable (and in use) today.
"We've taken a well-known and extremely safe compound, and have created novel derivatives that can specifically target the toxic biomolecule that drives the development of atherosclerosis, the cause of most heart attacks and strokes."
I'm excited for this one. Seems like a reasonable possibility for success addressing a huge killer.
This makes me wonder if we've accidentally already started terraforming Mars.
This is a case where the right answer is only obvious once it's been stated.
> Its a great feature - but there should have been another keyword for it: "also"
SmirkingRevenge - !@#$ing brilliant. You've stepped outside the box and presented an answer that will click as soon as it's read.
Someone make a PEP.
No reasonable person is talking about immortality. The issue here is defeating the diseases of old age.
> will create a lot more problems than it will solve.
That's a massive unfounded claim you're holding up against saving the lives of a hundred thousand people per day.
Suppose humanity attains indefinite life spans in the near future. Would you then advocate murder in order to save space?
Should we outlaw antibiotics because they save lives, and those lives take up resources?
I find this argument both unimaginative (improving technology changes the nature of our challenges) and repulsive (it's advocating murder through inaction).
Sorry, but this is wildly untrue. I don't really know where to begin, but you wouldn't even need to touch shaders to accomplish that, so no, you wouldn't know most of WebGL. THREE.js is very much a thick abstraction over WebGL.
> And in doing so you'll eventually realize that even WebGL itself is quite "high level" -- there is a _huge_ amount of abstraction that you take for granted in the browser.
Also not accurate. WebGL is a -very- thin wrapper over OpenGL ES, which is itself as low level as you can go without stepping into something like Vulkan. There's almost no abstraction.