Hey! I'm Vladimir Agafonkin (aka @mourner) from Kyiv, Ukraine.
In 2008, I started working on a small web maps library in secret from my boss, who insisted that I should stop "reinventing the wheel" and just use "mature, established solutions". When I reached out to the map developers community, my idea was ridiculed for "wasting time instead of contributing to existing projects".
This little library, Leaflet, eventually became one of the most influential projects in the mapping industry. It is used by Facebook, GitHub, Foursquare, Evernote, Flickr, Pinterest, Etsy, Craigslist, European Commission, NPR, The Washington Post and the like, and has almost 22k stars and 600 contributors on GitHub.
For the last 4.5 years, I've been building mapping tools of the future at Mapbox, focusing on the next-generation map technology, vector maps, and in particular performance, data visualization and computational geometry algorithms. Here are a few examples of what I do:
- A dive into spatial search algorithms
- How I built a wind map with WebGL
- Introducing heatmaps in Mapbox GL
- Rendering big geodata on the fly with GeoJSON-VT
To keep track of all the open source projects I'm involved with, I created this list. There are many, thanks to Mapbox โ I'm incredibly lucky and grateful to have the privilege to work on open source full-time, and do it remotely from Kyiv.
Outside of engineering, I write songs, play guitar and sing in progressive rock band Obiymy Doschu. We've recently released an album we've worked on for 8 years. The lyrics are Ukrainian, but give the album a chance โ if you like beautiful, evocative, multilayered rock music, it will speak to you nevertheless.
I'm also a happy father of 4-year-old twin girls. Here's me and my family celebrating Ukraine's Independence Day last year.
Ask me anything!
Top comments (78)
Hi @mourner !
I don't have any questions, and unfortunately I have never used Leaflet, yet.
Just wanted to say that you seem like a really great person and I loved the letter you received from the 77 year old!
Keep doing what you do!
Leaflet is a very nice library that I've used on a couple of sites ๐
Thank you very much!
You created the SunCalc library for calculating sun position, sunlight phases (times for sunrise, sunset, dusk, etc.), moon position and lunar phase for the given location and time. How does it work and what are some interesting ways that people have used it over the years?
The library came out of a website, suncalc.net, which I built more than 8 years ago and pretty much haven't updated since (you can tell by the fact that it still uses Google Maps :) โ and I received so many wonderful e-mails about it over the years.
I got letters from imams who used it for optimal prayer times, from a Tibet monk who used it to plan lunches, from air conditioner installers, from people who used it when choosing a home / apartment to buy, and from many enthusiastic gardeners.
But the most endearing e-mail I got related to it is this one, and it warms my heart with joy and happiness:
โค๏ธโค๏ธโค๏ธ
I use suncalc to work out Nautical Twilight for my app River Thames Guide (boats and ships registered in the UK should strike their ensign at 2100 or Nautical Twilight whichever is earlier).
More at riverthamesguide.net
This is a cool use of that project: atom.io/packages/sunset
Hi Vladimir! I'm a huge fan of the work you've done and it's one of my biggest goals to work on geospatial software like you have. I had a few questions if that's okay:
How did you get started in this area of combining geospatial and software development?
Does it help to have an extensive GIS background when it comes to working with geospatial software? With the tools we have nowadays (especially thanks to you), it's pretty easy to work with maps without any GIS knowledge and it's often the case that they don't really overlap depending on the use case.
Do you have any advice for people who want to break into geospatial tech (like myself), especially from the perspective of building tools?
Sorry if any of them are unclear or if there are repeats. Thanks!
Thank you!
I just got lucky โ worked for a generic software consultancy in 2008 when our company got a client from the mapping industry, CloudMade. Then I learned about OpenStreetMap, online maps, got excited, and it started from there.
It probably depends, but in my case, it helped a lot to NOT have any GIS background. This way, I could build a mapping library from a perspective of a total newbie, making it simple and easy to use for others too. You can hear more about my background with Leaflet and mapping in this video.
I'd recommend just jumping straight into building something, and learn along the way. Find a cool project idea that you'd feel enthusiastic to work on, and don't worry about having any knowledge gaps โ practice is the most effective way to learn.
Or find an open source project to contribute to. I know contributing to popular projects can be intimidating, but you can start small โ e.g. even just fixing typos in the docs could be a good gateway, and then you build from there.
Vladimir, thank you for this thorough response! In your opinion, is Javascript the best gateway language to get into geospatial software space, or are other languages, e.g. Python or Ruby viable options as well?
JavaScript is perhaps the most popular gateway, but they're all great choices! I'd perhaps add R and Java.
Beyond bugfixes and dropping support for eg non-ES6 browsers, what do you see as future developments for Leaflet?
I don't see Leaflet getting many new features โ its whole point is to remain small, simple and lightweight, and given it's maturity, there's not much left to add. I'd actually be happy if we manage to remove some features. :) So the main focus would be on bugfixes, performance, refactoring it to make it even simpler, better docs, more examples, and more extensibility points for plugin authors. However, I won't be against taking Leaflet to a new direction if the community and its other maintainers decide that it's the right choice.
Regarding that: What about any of those fancy frameworks with so-called "server-side rendering"? (I prefer the term "templating").
In particular: Do you think that the advantages of a SvelteJS port of Leaflet (e.g. ability to not use JS on the client) would be worth the problems (e.g. state transition animations, loss of canvas rendering)?
I never thought about it, but it would be cool to explore. :) It's hard to imagine how a JS-less interactive map would look like though โ like in pre-Google Maps era with a static image and buttons for panning that reload it?
I'd settle for something that is capable of templating all the HTML for the initial state of the map server-side, yet allow for JS-ful interaction afterwards. :-)
MultiMap FTW
Hi Vladimir,
I would personally want to thank you for Leaflet. It is an amazing tool !
There was a question below about it's future and I'd love this library to stay around for a while.
Leaflet accepts many plugins but some of them may not be updated by their creator. So some really interesting functions may not be available. Maybe it could be a good idea to embed them to Leaflet and update them yourself along with the library. I'm especially thinking about Locate plug-in and others to support third party external formats (like check when user location overlaps a polygon)
Also, I've been wondering for a long time why it is not possible to rotate maps according to user's device heading.
Thank you!
Thanks, Vald
As for the plugin, I was thinking about just a few of them that are almost basic needs for map users (locate is, definitely !)
Better plug in management would be a must !
As I've always said, need some "mapping" solution for a problem you have? Check Vladimir's repos before anywhere else.
We use Leaflet operationally on our public website for weather maps and other specialist maps.
Needed a pole of inaccessibility calc for label placement on overlapping polygons, oh, Vladimir has polylabel.
Do yourself a favour, check his repos first.
On a personal note, thank you for all your effort, on Leaflet and on the more specialist libs. I really appreciate it and has saved me a lot of time.
Cheers
Ian
Very happy to hear that, thank you!
What are your thoughts on 3D mapping? It seems that in the near future, with autonomous cars on the roads, there will be an amazing amount of point cloud data that should be mapped. Removing a dimension of that data to draw it in 2D seems wasteful.
I definitely see an explosion in the adoption of 3D mapping technologies coming very soon. The two biggest limiting factors up till now were:
Hi, mourner. I notice that many core vital algorithms are implemented by referencing academic papers. As reading academic papers are boring and tedious, how do you find one algorithm in papers that works?
It can be tedious indeed, and most papers are beyond my comprehension. So with practice, I learned to skim papers very quickly โ e.g. go through abstract, conclusion, then scan the pictures, look for algorithm pseudocode etc. Now I can determine if a paper is worth reading into in more detail after a quick skim.
Hi Vladimir.
Looks like I'm a bit too late for the party, but still, I've decided to drop in with some words of appreciation.
I'm using leaflet for my pet-project and although I can't appreciate it at full-scale as pet-project is something that you craft for 15 minutes per month still I've enjoyed using this library and was pleased to hear that the author comes from the same city as me.
But what was the most surprising is that you're a guitarist of ะะฑัะนะผะธ ะะพัั. This is really amazing how one can be both a decent software engineer and successful artist. Your path inspires me a lot!
P.S. Today I've listened to your new album ะกะพะฝ. Although IMO it's hard to say something new in a genre of progressive metal as there are already some mastodons who are there for decades, still I enjoy how you've embraced dozen of influences we love in progressive metal to create your own beautiful multi-layered mixture. Although ะะฑัะนะผะธ ะะพัั and Somali Yacht Club represent different genres to me they both are great this year discoveries which show how Ukrainians do some world-class musicianship. Keep rocking \m/
Hey Vladimir! How much math would you say is involved in developing map tools and map development in general?
Quite a bit when working on map rendering and when implementing geometric algorithms, but nothing you can't catch up on quickly online โ mostly basic vector and matrix math. The most advanced math concept I ever used in my 13-year career is function derivative, and only once โ it was a very unexpected use.
Interesting, thanks for the response! Do you find that math influences your development and/or your music?
Yes, but not directly โ I feel like graduating Applied Math immensely helped me structure my brain and prepared me for hard challenges ahead, even though I don't remember much of what I studied.