7 ms·
The most salient point that the article breaches is this: When people unfamiliar with the DOM, javascript, or indeed in some cases programming itself try to 'pi
by duckfruit 8y ago
The most salient point that the article breaches is this: When people unfamiliar with the DOM, javascript, or indeed in some cases programming itself try to 'pick up' a complex low level data visualization library like D3, it is natural for them to blame the library. But the problem obviously runs much deeper than that.
Running with the analogy in the article -- it is fruitless for someone who's never done any woodworking or furniture design ever to hope to become the next Charles Eames within the span of a few months.
- CJefferson 8y agoHowever, d3 seems particularly bizarre. Its the only library i ever remember trying hard to learn, and just giving up. There is too little indication, when you misuse it, of what went wrong. Ive done a bunch of javascript, DOM and visualisations in OpenGL, so i feel i should have a good chance.
- GijsjanB 8y agoComplexity comes at a price. Making it easy, abstracts certain low level functionality away. Compare Rust to Python. Compare OpenLayers to Leaflet. Compare the dashboard of an Apache to your car's dashboard. Rust, OpenLayers en Apaches aren't bizarre, they have complex functionality which you don't want to abstract away, because you want the ability to use it on that low level.
- kjeetgill 8y agoI don't know if this was your issue, but discovering that most of the API was accessors to SVG opened the floodgates for me. That said, I mostly learned it through the examples rather than a tutorial.
- bunderbunder 8y agoA lot of D3's oddness comes from the fact that there isn't anything (to my knowledge) that is comparable. It does just one thing - binding data to DOM elements - does it well, and then gets out of the way.
- LaGrange 8y agoD3 has libraries that do many other things, and TBH I feel like selection is the most "aged" part of D3. IMO modern component libraries such as React, Vue or Mithril do a much better job of maintaining a binding between data and the DOM tree. But many parts of D3 don't particularly care about how you eventually render the result.
- teachrdan 8y agoSomething that saved me was the extensive amount of documentation-via-Stack Overflow, particularly the number of answers provided by D3's author, Mike Bostock--often with links to working code to illustrate his answer! The amount of effort he's put in to helping people understand how to use D3 is almost as impressive as D3 itself.
- cup-of-tea 8y agoYou absolutely need to be fluent in SVG (or canvas?). SVG is your output, so without that it's like trying to print to the terminal without knowing ASCII. If you don't know SVG you might think d3 knows about graphics. It doesn't.
- EugeneOZ 8y agoIssue is in counter-intuitive API of D3, not in DOM.