Not wishing to disrespect the coding that went into this, but I don't see the point? The "standard" map used by the author already shows a visualisation of the area concerned, I'm not exactly sure what this magical plot style brings to the party other than a different way of drawing the same type of thing.
what do you mean by the standard map? The one before you press "draw the height map"? Or is there another one I'm missing.
If it is that map then the point is that it looks way better with the height map as you can actually visualize the height of mountain range relative to others. This isn't really discernible with the original map.
What I'd like to see is comparison and motivation relative to contour line maps, which are what I would consider the conventional way to show topography. I find these plots somewhat bizarre in comparison.
Are these joy plots more accessible to novice viewers somehow? To me, contour lines provide a very clear understanding of terrain but I admit I am pretty fluent in reading them. They bunch up to show steep slopes and cliffs, but give a much clearer sense of slope direction and more subtle topography like bowls, saddles, and stream beds.
I cannot really recall how I first experienced them as a novice. I was a child looking at USGS quadrant maps of the Sierra Nevada.
I think that this is more useful at showing height on a massive scale. Contour lines seem more generally useful, I agree, but looking at say the Appalachian mountain range on this zoomed out is much more appealing and intuitive than looking at the same scale using contour lines or another method of showing off height. I can also quickly compare the height of those mountain ranges to the Rockies.
Also it's just cool. I'll talk to my friend who does this type of thing professionally and ask his opinion. He is on vacation though. I was trained to read contour lines in boy scouts and I hike a lot since I live in the mountains, so I am quite comfortable with them too. I think this one is just a cool way to represent the data. I think the only time it is better is showing of height and height on a massive scale that are simply too big for other types of maps to be easily understood at a glimpse.
I'll challenge you to find a good map showing off the height of the Appalachian region, as I can't find one and really want to after seeing this. The one those tool can provide is quite cool in comparison to every one I can find. My friend would probably be a good person to ask in that regard.
It provides vastly more visual sense of the mountainous texture involved, as well as direct height comparison.
Our eyes are not great at detecting the difference between 80% and 82% grayscale, but they easily see the difference between adjacent shapes 80px and 82px tall.
Similarly, it's incredibly difficult for us to compare the difference between 80% and 82%, against 82% and 86%. Whereas with a line, it's trivial to see that the angle increased dramatically on the second one.
Grayscale and color maps are well-known for only being able to provide a "big-picture" overview because our eyes can only vaguely distinguish subtle differences in color/intensity. This type of plot addresses that partly.
This is one of my favorite spots on the map. The mountainrange is dividing a big part of the north from southern region called Westphalia. Only one river breaks through it allowing for an easy way across the mountains. The citys name at that spot is Porta Westfalica which is Latin and means "gate to Westphalia". I think this visualization illustrates the reason behind the name very well.
If memory serves me right, the mountains are a result of the last big ice age. Everything north was completely covered in a glacier. So the river beeing older does not seem unlikely.
This is a water gap, a feature which is commonly formed from a river older than the mountain range. In combination with that older river, in this case, the specific location was caused by "subrosion (a general expression applied to karst processes influencing the course of a river) and..meltwater channels at low altitudes" (Rohde 1994, Martini et al 2002-page 285).
-- Rohde P, 1994. Weser und Leine am Berglandrand zur Ober- und Mittelterrassen-Zeit E&G Quaternary Science Journal 44(1): 106–133, DOI 10.3285/eg.44.1.10.
Earth Primer is a science book for playful people. Discover how Earth works through play—on your iPad. Join a guided tour of how Earth works, with the forces of nature at your fingertips. Visit volcanoes, glaciers, sand dunes. Play with them, look inside, and see how they work.
Earth Primer defies existing genres, combining aspects of science books, toys, simulations, and games. It is a new kind of interactive experience which joins the guided quality of a book with open ended simulation play.
Features:
• Discover how Earth works through play.
• The forces of nature are at your fingertips—
make volcanoes, shape sand dunes, form glaciers, sculpt mountains, push around tectonic plates, paint with wind, heat up magma—and more!
I haven't the faintest[0], monsigneur "I'm pretty sure I've read articles about pie menus being designed by someone with your name during my interaction design master" ;)
Did you know you can enter your first name into Wolfram Alpha and it will guess your age, based on US birth statistics. So it's a shot in the dark with Dutch names.
It's completely off, haha, since I emigrated. But my grandfather did indeed come from Scheveningen, which lies inside that one hotspot. There are basically a handful of last names that up to a few generations ago were as good as unique to that fishing village, and Van der Zwan is one of them. I try not to think too much about the genetic implications of that fact.
(now I wonder how you knew that "Kees" is a Dutch name)
The R community started out calling these "joy plots" (after the Joy Division album) but then people found out about the association of "joy division" with the Holocaust (https://serialmentor.com/blog/2017/9/15/goodbye-joyplots) and so now they're called ridgeline plots.
Ugh. That really is something you can't forget after learning about it.
I never knew the name of the band was that dark. For a dark band, there's a certain logic, but yeah... will definitely be using 'ridgeline' from now on.
No it's not. "Joy" isn't a bad word. Joysticks seem to be fine.
It's specifically that the band "Joy Division" was named intentionally after a regrettable piece of history, and "joy plots" are named because of a Joy Division album cover.
Words aren't bad -- it's the meaning and derivation behind them. Etymology matters.
Do you think the Mac OS System 7.1 user interface designers at Apple should have called that grinning penis-like thing with a rash on the tip the "Control Strip"? It's just such a bad name, on so many levels.
>The Control Strip is a user interface component introduced in the "classic" System 7 Macintosh operating system. It currently exists as part of the Touch Bar interface in macOS.
>In the West, the control strip became known as the "death strip" (Todesstreifen) because of the shoot-to-kill orders given to the border guards. The East Germans preferred to call it by the more euphemistic name of the "action strip" (Handlungsstreifen). It was also nicknamed the Pieck-Allee ("Pieck Avenue") after East Germany's president Wilhelm Pieck (1949–60).
Show your evidence that "Joy Plots" were named after the Freudenabteilung. Yet you support the R community changing the name.
Clearly you're not going to find any evidence that the R community named the plots after the Freudenabteilung.
Instead of it clearly just being an innocent literal reference to the name of the band who produced a famous album cover that inspired the plots.
If your point is that etymology and history matter, then why are you saying that it matters for the R community, but not Apple?
By your inconsistent logic, it's not OK to criticize Apple for naming the Control Strip even through they may not have realized the historical meaning of Kontrollstreifen at the time, but it's OK to criticize the R community for naming Joy Plots after the name of a band instead of Freudenabteilung. Why the Widerspruch und Doppelmoral?
Your own words contradict your point: 'This isn't about "cancelling". It's about something being in bad taste in the first place, even if the originator hadn't been aware of it.' Yet now you're saying that because Apple was not aware of the dark meaning of "Control Strip", it's wrong to criticize that name. Pick a lane, and stick with it.
My point is that IBM declined to name the input device that Ted Selker invented the "Joy Button", even though that's what he originally wanted to call it (if not the "Keyboard Clitoris" or "Control Knob"), so they named it the "Trackpoint" instead. And that was most likely to avoid any sexual connotations, not about Nazi allusions.
Yet IBM has an unabashed well documented history of marketing and selling computing machinery to Nazi Germany that facilitated the Holocaust, which substantially enabled them to identify, round up, and murder many Jews and other persecuted minorities (not to mention their contracts with the US Government to help round up Japanese people into internment camps). So by IBM management's logic, Nazi are fine upstanding customers, but sexual references in product names are a no-no.
That's really, really stupid. I wish the endless quest for moral purification of language would just die already but it's only getting worse. Prudes used to get upset over words for their meanings, then because the wrongs kinds of people used them. Now the etymology can be mined for cancellation reasons even if present usage is conceptually removed twice over. I wonder how the author copes with the ones that derive from slavery and brutal execution methods.
It's exhausting catering to these people who fixate on dredging up and removing any hint of bitterness from words. We need to start treating picky speakers like picky eaters instead of continually acquiescing to the tyranny of the minority. No more fucking chicken nuggets, we are adults here.
The term "joy plot" was coined in 2017, just three years ago. It's not some ancient term.
This isn't about "cancelling". It's about something being in bad taste in the first place, even if the originator hadn't been aware of it.
It's kind of like how we don't use the racist term for Brazil nuts anymore. [1] Follow the link for the phrase, I'm not going to write it here. Surely you don't think you should be using that in everyday conversation, do you?
How about you show a little empathy, and realize that some terms are just gross to use? And that there's no reason to use one that brings up offensive associations, when we can use another that doesn't? It's just about being a decent human being and taking other people's feelings into account.
You're drawing a moral equivalence between an album cover reference and a racial slur. That's insane. I reject your entire angle.
"Joyplot" harms literally nobody. There are no victims of joyplots. There aren't even victims of Joy Division. It's a reference to an image associated with a band which was grimly ironically named in reference to a historical atrocity. The connection is so tenuous that you can't get your feelings hurt by it unless you're actively trying. It's so obscure that nobody even noticed it until some asshole wanted to make waves, obviously it was entirely about cancelling the word because it wasn't even an issue until then.
So who am I supposed to show empathy for? Descendants of Holocaust victims who are into data visualization but evidently feel too threatened by the community to speak up for themselves? Get a grip. There is nobody hurt by this. There is nobody to have empathy for. You're just abusing "empathy" to insinuate I'm not even a decent human being if I don't go along with your personal taste. That's not empathy, that's bullying. I don't feel sorry for you over a piece of trivia.
I'm saying that once you know what the "joy" in "joy plot" refers to, you can't unsee that. And that every time you see the term "joy plot" you're going to be aware of that.
No, that isn't "literal" harm in the sense of violence. But it's unpleasant. And it's not just my personal taste, but clearly that of others or it would never have been brought up.
So that's the empathy to show: for people who think using a historical reference that shows humanity at a shameful low point is inappropriate for modern technical terminology. For modern people in general, not specific holocaust victims or their descendents.
That it's not an "edgy joke", it's just inappropriate. So let's try to be decent understanding people and call it something better, shall we?
I hate being told what words I have to use. No it's not literal harm. But it's unpleasant. And it's not just my personal taste, but clearly the that of others.
So that's the empathy to show: for people who hate being directed how to think and express themselves by complete strangers. For free society in general.
See how it goes both ways? Empathy is only a mode of thinking. You are demanding compliance. You're not even empathizing yourself, since you can't see past your own notion of how you want people to interact. "Inappropriate", "modern", "decent", "understanding" are all just passive-aggressive weasel words for your subjective norms. True understanding doesn't insist on others to perfect themselves to your comfort.
I get that. That's the root of your discomfort here.
But the thing is, in society, we all have to work together. Getting along is important. Of course you're free to use the words you want. But then the rest of us are free to choose not to work with you and criticize your insensitivity.
I'm arguing that people ought to get along with each other. That involves having empathy for each other. Having human sensitivity.
You're arguing you should be able to do whatever you want, and if other people are bothered that it's their problem. You can call that many things, but you can't call it empathy. It's mainly called being selfish, not trying to get along.
His stated position is that it's ok to criticize the R community's unwitting insensitivity, but not Apple's. Shouldn't an open community of people have at least as much freedom of speech as a giant corporation?
Some people find it offensive and uncomfortable when other people make contradictory statements in the same conversation. Should we cancel hypocrisy and logical inconsistency, then?
>the image is a reinterpretation of the image of radio waves from the first discovered pulsar. The original was illustrated by Cornell grad student Harold Craft in his 1970 PhD thesis and subsequently published in the Cambridge Encyclopeadia of Astronomy. [0]
Lovely. Feature request... two sliders for X/Y offset, to solve the issue where path of a river and height data don't match after changing height scale with overlay opacity under 100 (e.g. see https://imgur.com/a/ipm1ixb )
After tweaking a little bit of settings (reducing height settings to low), get a very interesting graphics for Asia+Europe - quite a few majestic mountain ranges there.
The idea was that you can design products yourself. Once the map is fully rendered and settings window is closed there is a small link appears that allows you to print the results.
I think I did terrible job here by hiding it too far. For me it is a struggle between usefulness of the feature and level of annoyance it could bring to those who are not interested
I spent some time (but not enough) to add a tilt slider. Ultimately what it did was change the renderRows fY calculation to:
let fY = y - Math.floor(scale * (height - minHeight) / heightRange) - r * tilt * 0.1;
Of course, this creates blank space at the bottom, but I think it makes things a little more interesting without fudging too much with the scale and getting sharp peaks.
When I find more free time, I can flesh it out and make a PR, but I love this idea. Thanks for sharing it!
I also thank you for sharing! In reading your code to learn from your work, I noticed a little optimization you could use, that applies to other 2d canvas code in general:
CanvasRenderingContext2D has save() and restore() methods you can call to re-use partial paths. So instead of making the path and closing it to fill, then making it again without closing it to stroke, you can make it once without closing, save the graphics state, close the path, then fill, restore the graphics state, then stroke! That is a classic idiom from PostScript (draw, gsave, fill, grestore, stroke).
That should save a bunch of JavaScript looping and spooning points through the 2d context api. (It's the individual lineTo calls that are expensive, because of all the overhead of JavaScript<=>C bindings, not stroking or filling the actual lines. And there's no way to provide an array of points all at once, like with WebGL.
(At least SVG made the right decision, inspired by VML, to put all the points of a path in one attribute string, instead of using individual XML elements for each point.)
Once you get into native code, it's fast even if there's a lot to do (i.e. calling ctx.stroke once), but jumping in and out of native code a lot (i.e. calling ctx.lineTo a thousand times) is slow.)
Thanks for sharing the code, it's inspired me! (I'm trying to figure out how to rotate and otherwise generally transform the direction that the lines scan across the depth map and screen, to get a Max Headroom effect! Maybe somebody with deep shader-fu could suggest an out-of-the-box way to render it in hardware with WebGL, to apply to live video!)
Come to think of it, you could just draw the ridges directly as polygons with WebGL, and that would be quite flexible and performant!
I haven't tested it yet, but here's the new drawPolyLine from createHeightMapRenderer.js:
/**
* Draws filled polyline.
*/
function drawPolyLine(points) {
if (points.length < 3) return;
let smoothRange = getSmoothRange(points, smoothSteps);
points = smoothRange.points;
// Create the unclosed path.
ctx.beginPath();
ctx.moveTo(points[0], points[1]);
for (let i = 2; i < points.length; i += 2) {
ctx.lineTo(points[i], points[i + 1]);
}
// If line's height is greater than 2 pixels, let's save
// the graphics state, finish and close the path, fill it,
// then restore the graphics state:
if (smoothRange.max - smoothRange.min > 2) {
ctx.save();
ctx.lineTo(points[points.length - 2], smoothRange.max);
ctx.lineTo(points[0], smoothRange.max);
ctx.closePath();
ctx.fillStyle = lineFill;
ctx.fill();
ctx.restore();
}
// Now finally stroke the unclosed path.
ctx.strokeStyle = lineStroke;
ctx.stroke();
}
There was a classic "Grandfather Clock" posting from Glenn Reid at Adobe (author of the "Green Book" on PostScript language program design) to comp.lang.postscript that really opened my eyes about writing code in interpreted languages like PostScript (and JavaScript, while JIT'ed at runtime, still makes calling native code expensive), and balancing optimization with readability:
Here's Glenn's "Green Book", which was like a bible to me, and still is quite relevant to canvas 2d context programmi...
Wow, bummer -- that's a surprise and disappointment to me that the canvas 2d API isn't more like PostScript in that way. Filling then stroking the same path is a very common operation.
NeWS's dialect of PostScript (but not standard Adobe PostScript) had currentpath / setpath operators to save and restore the current path as a first class object, so you could use it any number of times later in different contexts. I wish the canvas 2d api had that too, plus some set operations on regions.
It'd be fun and worth coding up a WebGL renderer, I think! Then you can pass all the points in one big chunk of memory, and draw it from any direction, with lighting and shadows!
Refresh the page, make your chart, close formatting options and wait for 5-10 seconds. The button should appear.
Typing that out made me think I might have made a mistake by hiding print functionality too far. I just didn't want to be too aggressive showing this option
68 comments
[ 1770 ms ] story [ 739 ms ] threadIf it is that map then the point is that it looks way better with the height map as you can actually visualize the height of mountain range relative to others. This isn't really discernible with the original map.
Are these joy plots more accessible to novice viewers somehow? To me, contour lines provide a very clear understanding of terrain but I admit I am pretty fluent in reading them. They bunch up to show steep slopes and cliffs, but give a much clearer sense of slope direction and more subtle topography like bowls, saddles, and stream beds.
I cannot really recall how I first experienced them as a novice. I was a child looking at USGS quadrant maps of the Sierra Nevada.
Also it's just cool. I'll talk to my friend who does this type of thing professionally and ask his opinion. He is on vacation though. I was trained to read contour lines in boy scouts and I hike a lot since I live in the mountains, so I am quite comfortable with them too. I think this one is just a cool way to represent the data. I think the only time it is better is showing of height and height on a massive scale that are simply too big for other types of maps to be easily understood at a glimpse.
I'll challenge you to find a good map showing off the height of the Appalachian region, as I can't find one and really want to after seeing this. The one those tool can provide is quite cool in comparison to every one I can find. My friend would probably be a good person to ask in that regard.
Our eyes are not great at detecting the difference between 80% and 82% grayscale, but they easily see the difference between adjacent shapes 80px and 82px tall.
Similarly, it's incredibly difficult for us to compare the difference between 80% and 82%, against 82% and 86%. Whereas with a line, it's trivial to see that the angle increased dramatically on the second one.
Grayscale and color maps are well-known for only being able to provide a "big-picture" overview because our eyes can only vaguely distinguish subtle differences in color/intensity. This type of plot addresses that partly.
1. Feels like almost all the mountain ranges are almost joined up.
2. These large Islands are much more mountainous than one would naturally expect.
This is one of my favorite spots on the map. The mountainrange is dividing a big part of the north from southern region called Westphalia. Only one river breaks through it allowing for an easy way across the mountains. The citys name at that spot is Porta Westfalica which is Latin and means "gate to Westphalia". I think this visualization illustrates the reason behind the name very well.
From my speculative chair, it looks like the river existed before the ranges.
-- https://en.wikipedia.org/wiki/Water_gap
-- https://onlinelibrary.wiley.com/doi/book/10.1002/97814443042...
-- Rohde P, 1994. Weser und Leine am Berglandrand zur Ober- und Mittelterrassen-Zeit E&G Quaternary Science Journal 44(1): 106–133, DOI 10.3285/eg.44.1.10.
http://www.earthprimer.com/
Earth Primer is a science book for playful people. Discover how Earth works through play—on your iPad. Join a guided tour of how Earth works, with the forces of nature at your fingertips. Visit volcanoes, glaciers, sand dunes. Play with them, look inside, and see how they work.
Earth Primer defies existing genres, combining aspects of science books, toys, simulations, and games. It is a new kind of interactive experience which joins the guided quality of a book with open ended simulation play.
Features:
• Discover how Earth works through play.
• The forces of nature are at your fingertips— make volcanoes, shape sand dunes, form glaciers, sculpt mountains, push around tectonic plates, paint with wind, heat up magma—and more!
• 20 different tools to unlock.
• Richly interactive geological simulations.
• Sandbox mode.
https://en.wikipedia.org/wiki/Chaim_Gingold
https://www.wired.com/2015/02/a-sandbox-for-the-anthropocene...
https://vimeo.com/116182914
https://www.youtube.com/watch?v=qtsf3nRFfwk
(Also, oh wow, it's actually you!)
[0] https://www.cbgfamilienamen.nl/nfb/detail_naam.php?gba_lcnaa...
Did you know you can enter your first name into Wolfram Alpha and it will guess your age, based on US birth statistics. So it's a shot in the dark with Dutch names.
https://www.wolframalpha.com/input/?i=kees&assumption=%7B%22...
A better example, it guesses "Gertrude" is probably 86 years old:
https://www.wolframalpha.com/input/?i=gertrude
(now I wonder how you knew that "Kees" is a Dutch name)
https://anvaka.github.io/peak-map/#12.1/40.9711/-75.13641
https://anvaka.github.io/peak-map/#8.61/18.2865/-66.3545
Edit: Just noticed it's called a "joy plot" in the repo.
I never knew the name of the band was that dark. For a dark band, there's a certain logic, but yeah... will definitely be using 'ridgeline' from now on.
Thanks for the info. Genuinely appreciated.
https://news.ycombinator.com/item?id=21757484
(But then again, since when did IBM ever shy away from selling their products to Nazis?)
https://en.wikipedia.org/wiki/IBM_and_the_Holocaust
It's specifically that the band "Joy Division" was named intentionally after a regrettable piece of history, and "joy plots" are named because of a Joy Division album cover.
Words aren't bad -- it's the meaning and derivation behind them. Etymology matters.
https://news.ycombinator.com/item?id=21870821
https://en.wikipedia.org/wiki/Control_Strip
>The Control Strip is a user interface component introduced in the "classic" System 7 Macintosh operating system. It currently exists as part of the Touch Bar interface in macOS.
https://en.wikipedia.org/wiki/Fortifications_of_the_inner_Ge...
>In the West, the control strip became known as the "death strip" (Todesstreifen) because of the shoot-to-kill orders given to the border guards. The East Germans preferred to call it by the more euphemistic name of the "action strip" (Handlungsstreifen). It was also nicknamed the Pieck-Allee ("Pieck Avenue") after East Germany's president Wilhelm Pieck (1949–60).
Instead of it clearly just being a literal strip of controls.
Clearly you're not going to find any.
This is my point. Etymology and history matters.
Also, gratuitous genital analogies don't help to make anyone's case here.
Clearly you're not going to find any evidence that the R community named the plots after the Freudenabteilung.
Instead of it clearly just being an innocent literal reference to the name of the band who produced a famous album cover that inspired the plots.
If your point is that etymology and history matter, then why are you saying that it matters for the R community, but not Apple?
By your inconsistent logic, it's not OK to criticize Apple for naming the Control Strip even through they may not have realized the historical meaning of Kontrollstreifen at the time, but it's OK to criticize the R community for naming Joy Plots after the name of a band instead of Freudenabteilung. Why the Widerspruch und Doppelmoral?
Your own words contradict your point: 'This isn't about "cancelling". It's about something being in bad taste in the first place, even if the originator hadn't been aware of it.' Yet now you're saying that because Apple was not aware of the dark meaning of "Control Strip", it's wrong to criticize that name. Pick a lane, and stick with it.
My point is that IBM declined to name the input device that Ted Selker invented the "Joy Button", even though that's what he originally wanted to call it (if not the "Keyboard Clitoris" or "Control Knob"), so they named it the "Trackpoint" instead. And that was most likely to avoid any sexual connotations, not about Nazi allusions.
Yet IBM has an unabashed well documented history of marketing and selling computing machinery to Nazi Germany that facilitated the Holocaust, which substantially enabled them to identify, round up, and murder many Jews and other persecuted minorities (not to mention their contracts with the US Government to help round up Japanese people into internment camps). So by IBM management's logic, Nazi are fine upstanding customers, but sexual references in product names are a no-no.
Please be a Joy Button, not a Control Knob!
Huh? Joy plots were named after Joy Division (because of their album cover), which was named for what happened in the Holocaust.
The chain of derivation is crystal clear and 100% undisputed.
The Control Strip is named after a strip of controls. There's zero evidence of derivation from something else.
End of story.
I don't know why you're continuing to talk about genitals or IBM. They have zero to do with this.
It's exhausting catering to these people who fixate on dredging up and removing any hint of bitterness from words. We need to start treating picky speakers like picky eaters instead of continually acquiescing to the tyranny of the minority. No more fucking chicken nuggets, we are adults here.
The term "joy plot" was coined in 2017, just three years ago. It's not some ancient term.
This isn't about "cancelling". It's about something being in bad taste in the first place, even if the originator hadn't been aware of it.
It's kind of like how we don't use the racist term for Brazil nuts anymore. [1] Follow the link for the phrase, I'm not going to write it here. Surely you don't think you should be using that in everyday conversation, do you?
How about you show a little empathy, and realize that some terms are just gross to use? And that there's no reason to use one that brings up offensive associations, when we can use another that doesn't? It's just about being a decent human being and taking other people's feelings into account.
[1] https://en.wikipedia.org/wiki/Brazil_nut
"Joyplot" harms literally nobody. There are no victims of joyplots. There aren't even victims of Joy Division. It's a reference to an image associated with a band which was grimly ironically named in reference to a historical atrocity. The connection is so tenuous that you can't get your feelings hurt by it unless you're actively trying. It's so obscure that nobody even noticed it until some asshole wanted to make waves, obviously it was entirely about cancelling the word because it wasn't even an issue until then.
So who am I supposed to show empathy for? Descendants of Holocaust victims who are into data visualization but evidently feel too threatened by the community to speak up for themselves? Get a grip. There is nobody hurt by this. There is nobody to have empathy for. You're just abusing "empathy" to insinuate I'm not even a decent human being if I don't go along with your personal taste. That's not empathy, that's bullying. I don't feel sorry for you over a piece of trivia.
No, that isn't "literal" harm in the sense of violence. But it's unpleasant. And it's not just my personal taste, but clearly that of others or it would never have been brought up.
So that's the empathy to show: for people who think using a historical reference that shows humanity at a shameful low point is inappropriate for modern technical terminology. For modern people in general, not specific holocaust victims or their descendents.
That it's not an "edgy joke", it's just inappropriate. So let's try to be decent understanding people and call it something better, shall we?
So that's the empathy to show: for people who hate being directed how to think and express themselves by complete strangers. For free society in general.
See how it goes both ways? Empathy is only a mode of thinking. You are demanding compliance. You're not even empathizing yourself, since you can't see past your own notion of how you want people to interact. "Inappropriate", "modern", "decent", "understanding" are all just passive-aggressive weasel words for your subjective norms. True understanding doesn't insist on others to perfect themselves to your comfort.
I get that. That's the root of your discomfort here.
But the thing is, in society, we all have to work together. Getting along is important. Of course you're free to use the words you want. But then the rest of us are free to choose not to work with you and criticize your insensitivity.
I'm arguing that people ought to get along with each other. That involves having empathy for each other. Having human sensitivity.
You're arguing you should be able to do whatever you want, and if other people are bothered that it's their problem. You can call that many things, but you can't call it empathy. It's mainly called being selfish, not trying to get along.
https://news.ycombinator.com/item?id=21984273
His stated position is that it's ok to criticize the R community's unwitting insensitivity, but not Apple's. Shouldn't an open community of people have at least as much freedom of speech as a giant corporation?
Some people find it offensive and uncomfortable when other people make contradictory statements in the same conversation. Should we cancel hypocrisy and logical inconsistency, then?
It would be cool to make the lines rotate and translate and scan around over the map like Max Headroom's background!
https://www.youtube.com/watch?v=6epzmRZk6UU
I wonder how you could go about implementing it as a high performance shader?
(Github: https://github.com/jo-m/waterfall-plot-webgl)
I wonder what happened to Greenland, though? It's just... not there.
Also -- especially for printing -- an "export to SVG" option would be amazing.
The data has a few bugs, I shouted out to the data provider here:
https://twitter.com/anvaka/status/1214222926070730758?s=19
Hopefully they will find time to fix it
Just wanted to chime in and say thank you for the sharing and love!
Have a wonderful start of the year!
I'm assuming its a reference to Joy Division's iconic Unknown Pleasures cover [0] by Peter Saville?
[0] https://www.radiox.co.uk/artists/joy-division/cover-joy-divi...
[0] https://www.esri.com/arcgis-blog/products/arcgis-pro/mapping...
Pretty cool that the album was inspired by the visual representation of the first discovered pulsar!
Apologizes if your link already says that. I cannot open it due to work filters I think :/
After tweaking a little bit of settings (reducing height settings to low), get a very interesting graphics for Asia+Europe - quite a few majestic mountain ranges there.
Coffee cup result:
https://www.zazzle.com/map_mug-168739066664861503?t_map_iid=...
https://www.zazzle.com/map_mug-168739066664861503?t_map_iid=...
I think I did terrible job here by hiding it too far. For me it is a struggle between usefulness of the feature and level of annoyance it could bring to those who are not interested
When I find more free time, I can flesh it out and make a PR, but I love this idea. Thanks for sharing it!
CanvasRenderingContext2D has save() and restore() methods you can call to re-use partial paths. So instead of making the path and closing it to fill, then making it again without closing it to stroke, you can make it once without closing, save the graphics state, close the path, then fill, restore the graphics state, then stroke! That is a classic idiom from PostScript (draw, gsave, fill, grestore, stroke).
That should save a bunch of JavaScript looping and spooning points through the 2d context api. (It's the individual lineTo calls that are expensive, because of all the overhead of JavaScript<=>C bindings, not stroking or filling the actual lines. And there's no way to provide an array of points all at once, like with WebGL.
(At least SVG made the right decision, inspired by VML, to put all the points of a path in one attribute string, instead of using individual XML elements for each point.)
https://developer.mozilla.org/en-US/docs/Web/SVG/Element/pat...
Once you get into native code, it's fast even if there's a lot to do (i.e. calling ctx.stroke once), but jumping in and out of native code a lot (i.e. calling ctx.lineTo a thousand times) is slow.)
Thanks for sharing the code, it's inspired me! (I'm trying to figure out how to rotate and otherwise generally transform the direction that the lines scan across the depth map and screen, to get a Max Headroom effect! Maybe somebody with deep shader-fu could suggest an out-of-the-box way to render it in hardware with WebGL, to apply to live video!)
Come to think of it, you could just draw the ridges directly as polygons with WebGL, and that would be quite flexible and performant!
I haven't tested it yet, but here's the new drawPolyLine from createHeightMapRenderer.js:
Original:
https://github.com/anvaka/peak-map/blob/master/src/lib/creat...
Optimized:
There was a classic "Grandfather Clock" posting from Glenn Reid at Adobe (author of the "Green Book" on PostScript language program design) to comp.lang.postscript that really opened my eyes about writing code in interpreted languages like PostScript (and JavaScript, while JIT'ed at runtime, still makes calling native code expensive), and balancing optimization with readability:Here's Glenn's "Green Book", which was like a bible to me, and still is quite relevant to canvas 2d context programmi...
Which causes the bottom closing line to appear where it shouldn't. Here is a simple jsbin to reproduce: https://jsbin.com/luzatuteha/1/edit?html,js,output
NeWS's dialect of PostScript (but not standard Adobe PostScript) had currentpath / setpath operators to save and restore the current path as a first class object, so you could use it any number of times later in different contexts. I wish the canvas 2d api had that too, plus some set operations on regions.
http://bitsavers.trailing-edge.com/pdf/sun/NeWS/NeWS_1.1_Man...
It'd be fun and worth coding up a WebGL renderer, I think! Then you can pass all the points in one big chunk of memory, and draw it from any direction, with lighting and shadows!
[edit]:
Here are the alps, quite nicely rendered (kind of reminds me of a Tolkien map of middle earth).
https://anvaka.github.io/peak-map/#6.31/46.111/10.14
But here's a zoomed in rendering (of Sudtirol / Dolomites), no so great IMO:
https://anvaka.github.io/peak-map/#10/46.148/11.4086
https://anvaka.github.io/peak-map/#14.63/44.59011/-104.71462
Mt Fuji Crater:
https://anvaka.github.io/peak-map/#12.89/35.36449/138.72709
Typing that out made me think I might have made a mistake by hiding print functionality too far. I just didn't want to be too aggressive showing this option