Nice article! As someone who implemented both clustering and heatmaps in Mapbox / Maplibre GL JS, just wanted to add that clustering isn't just a visualization technique — it's also a performance feature that can support other visualization types. It might not matter for 30k points, but for e.g. 300k, you can implement dot density with stacked opacity via clustering — use a tiny clustering radius, and style the dots so that opacity is a function of point_count. This creates an approximation of an unclustered viz that performs much smoother. Same thing with heatmaps — you can define heatmap-weight as a function of clustered source's point_count, and it will look nearly identical (aside minor shifts) as the unclustered one, but perform much better.
HN user
mourner
Engineer at Mapbox, creator of Leaflet, open source enthusiast, algorithms geek, speaker, musician (Obiymy Doschu), baker, father of twin girls, Ukrainian. agafonkin.com
Amazing achievement, congratulations! Can't seem to be able to read it though, it greets me with "Sorry, you have been blocked" CloudFlare page — is this a HN overloading the website, or did the host accidentally block IPs from Ukraine perhaps?
You can read more about why most web maps are like this and a quest to fix this in this article: https://www.mapbox.com/blog/adaptive-projections
Perhaps you see this conflict from the perspective of a sports fan
I see this from the perspective of a Ukrainian living in Kyiv. Your ignorance is mind-boggling, and after the laughable mention of "NATO biolabs" there's truly no sense in further conversation. These tinfoil-head "I do my own research" people are something else.
Russian war industry just burns reserves for nothing — hundreds of billions spent on missiles and long range drones didn't achieve any strategic objectives, all those expensive modern tanks, armored vehicles and artillery systems gets demolished by $500 drones, russian soldiers mass switching from military vehicles to donkeys, horses, bikes & buggies. Russia is no longer able to defend their vast territory against Ukrainian long range attacks so their oil refineries and military factories explode every day. 150k+ verified deaths (with names) already vastly exceed any russian wars since WW2 and we know there are many times more unverified ones.
Sevastopol nuclear base is irrelevant to modern warfare, and the fleet (both ships and subs) is either on the bottom of the sea (like the flagship Moskva) or gone to hiding in Novorossiysk because they can't defend against cheap Ukrainian naval drones.
Capture of cities not on the agenda — of course every time they fail spectacularly at something they'll claim they didn't plan it anyway, lol. They attempted and failed the capture of Kyiv, Kharkiv, Chernihiv, Sumy & Mykolaiv, then had to flee from Kherson & much of the Kharkiv oblast, and they are no longer strategically able to attempt capturing any more — only slow creep over obliterated rubble of small towns by sacrificing a thousand people a day in meat grinders.
I can't believe you can be so delusional, it's just amazing what russian propaganda does to people.
Soviet stockpiles nearly depleted, 1.5 million dead or wounded, Black Sea fleet practically destroyed, third of strategic bomber fleet destroyed, economy in downfall, no major cities captured in 4 years of all out war, gas and oil revenues plummeting, and there are STILL people saying “oh they just didn’t even start for real yet, just you wait”, gosh. Just laughable.
Yeah, I think I last updated that website even before I released the first version of Leaflet. Life is very hectic at the moment, but I do really want to get to it sooner than later and modernize everything.
Wrote it 14 years ago! https://github.com/mourner/suncalc/ It's a bit neglected but I'll do some upkeep shortly...
Author of Suncalc here — this is exactly the kind of stuff I love to see my code being used in, thanks for sharing!
The updated syntax looks brilliant — can't wait to try it out by upgrading some of my older notebooks! I was worried about the future of Observable since the Canvas announcement — it felt like notebooks were being slowly phased out, but I'm glad to be proven wrong.
Any timeline on bringing the new format to the Web editor? For me, the biggest draw of Observable is being able to instantly start exploring and visualizing some data without ANY setup (creating some local files, installing dependencies, launching a dev server etc.) — just click "New notebook" and off you go, frictionless. I hope this remains a priority.
Also worth mentioning the data viz community aspect, which I used to enjoy a ton — it's a bummer that things like being able to follow certain users and see their new notebooks in a feed were phased out, and that trending notebooks are now hidden under the Help menu instead of being featured on the user's homepage. This might be one of the reasons I stopped coming back to the platform as often, although I realize building a community is very difficult and hard to monetize — just thought I'd share.
Also worth checking out https://github.com/onthegomap/planetiler, which maybe a bit less mature, but is much faster than Tilemaker.
Wonderful project! One thing I wish the website would have is being able to find the right book to read out of this enormous list — e.g. showing / sorting by Goodreads ratings (which I realize you might not want to do), or at least having some kind of a "Featured" section with the most critically acclaimed / must read books of the project on one page.
I used it extensively until Microsoft did that absolutely atrocious “redesign” that tried turning it from a messenger into a flashy social app, making it an unusable ugly mess. Telegram was just starting to grow but I had to switch.
The problem with map projections in the digital age is what works well on world scale doesn't on street scale and vice versa. As explained in detail in this post: https://www.mapbox.com/blog/adaptive-projections
Love Bunny too, wonderful service and great team. I wish there'd be an easy way to set up auto-deploy to Bunny Edge Storage on GitHub commit (to avoid doing so manually), but I guess it's not to hard to do through GitHub Actions.
Got a bunch of PRs adding missing terms after the article, nice :) Thanks for the mention!
A lovely map — thanks for using Leaflet and keeping that little Ukrainian flag in the corner! Probably needs an attribution for the map added too (looks like it's Carto with an OpenStreetMap-derived basemap).
Not too fancy, but I built a math model & interactive visualization of my parking spot to understand how to efficiently park there without bumping into anything: https://observablehq.com/@mourner/kinematics-of-reverse-angl...
Discussed on HN here: https://news.ycombinator.com/item?id=21891919
I've been looking for a replacement to WebGL Stats for a long time — thank you so much for making it! This is indispensable.
To people missing the joke, this is a quote from ChatGPT that was asked to comment on Tauri in "Dev Mode", taken from comments here https://news.ycombinator.com/item?id=34972791
I'd suggest KataGo, which is much stronger and more actively developed than Leela Zero https://github.com/lightvector/KataGo
Rooting for you get through this! How did the meeting go?
The new geo mark looks great, congrats on such awesome progress on the Plot library, Mike & Fil!
Visualizing any kind of data in a few lines of code quickly is a very compelling use case, something that had been pretty difficult with d3 and various charting libraries before — to the point where writing custom Canvas/SVG code instead somehow always felt easier for me. Now I'm really compelled to learn Plot :)
At pbf speeds, decoding is usually no longer a bottleneck, but bandwidth might be when comparing with gzipped JSON. Also, one of the primary advantages of pbf is being able to decode partially and lazily (and adjust how things are decoded at low level), which is very important in use cases like vector maps.
generating dead Putins, or what?
To be fair, the first ever prompt I tried out with an AI image generator like this is "putin eaten alive by pigs" :) It's hard to refrain.
It renders in WebGL with SDFs, but rendering is a small part of the problem — placing labels along paths including curved ones, avoiding collisions etc. gets very complex very fast.
Nice tutorial! Brace yourself for the next step (text rendering and label placement) — this is way more difficult than it may seem at first, and contributes to a lot of complexity in Mapbox GL JS.
For me as a non-native speaker who had this problem too, reading on Kindle helped learn the language immensely. You can long-press any word and it will show results from a high-quality dictionary (there are few to choose from, including the Oxford dictionary) — offline, and without putting the book away, which would be a deal breaker for me. It will also remember all the words you look up so that you can practice later.
Oh, nothing wrong with going with your gut and paying attention to the warning signs. But, "I briefly looked at these people from afar and immediately concluded they all only pretend to work and never accomplish anything" is just ridiculously arrogant.
With this much saltiness, it's not hard to guess the result of that interview :)