AdventureSeed, an adventure in Web programming
The Idea
I wanted a free way to look at all of the interesting outdoor spots and trails on a map. This was a problem in 2009 when I was making this site, because spatial data types weren't common in databases, openstreetmap wasn't near as good as Google yet, and the request/response cycle time is slow compared to how quickly people can navigate a map.
Implementation
Wanting the map to make its markers show as quickly as the user could navigate presented a problem, and I went through many solutions before I found Google Fusion Tables. This approach is limited, but it worked for this site.
The second problem was data. A lot of the cool stuff is secret, guidebooks are often out of date, and some of the best stuff is even illegal, like mountain bike trails. I wanted it all to be present, so I gave the site wiki functionality.
A lot of ideas were built and thrown out as well. You used to be able to draw trails directly onto the map, and I decided that was a bad idea. It was too difficult to get accurate trails. There were also algorithms to use GPS data to find trails, and that worked poorly. There was just as much accurate data as inaccurate data (this was before phones had GPS chips too).
The site was originally built with CMS called XWiki, Postgres, Postgis, and some custom servlets. After dealing with the headache of other peoples' open-source technologies, I just wrote the whole thing from scratch in App Engine. Easy Peasy.
Data
While we're talking about things that didn't work, we can include USGS DLG data. After all of the work and computation converting these data into KML format, extracting the necessary features, and making sure the projections were correct, the data were basically nonsense.
The other NOAA and USGS data were fascinating, and include all sorts of hot springs that are not listed in any guidebooks. I wanted cave locations, but those are classified by the USGS. Somebody somewhere has an awesome list of the most amazing caves, but I probably never will. Right now, the best list on the internet is Wikipedia
Web scraping and hand entry were the best way to fill in the map until I finally abandoned the project for a job. There are probably ~40,000 POI's on the site, and some of them would be a lot of fun to go find, so take a look if you're wondering what's in your area.
Here's what the site has looked like for the last few years.
What I learned
- Trying to build something yourself is a ton of fun. You'll never look at a job the same way again.
- Learning by doing is not fast. Learning by studying and then implementing is much faster and more fun
- Getting people to use your site is the hardest part. Devote more energy to this than you think is necessary, sooner than you think is necessary
- Doing cool, original things draws people better than anything else. The blog posts about building bamboo bikes still bring the site the most traffic its ever had.