Getting into the spirit of actually making something, being the mini-app that will give us the nearest grocery stores for a certain location. Let’s get down to implementation level!
During our scavenge hunt yesterday searching for an appropriate way to start indexing supermarket brands and stores, we determined the brands in scope of our exercise and our opinion that there is no high-quality centralized service available that will give us the store locations that we want to know for our brands. We will automate the creation of our high quality store location data ourselves with custom visitors for the brands identified. This does not have to be a real-time process, and it does not have to be super-fast. It’s just a scheduled task to update our database periodically, lets say once every week.
As I’m a real Microsoft developer, the server technology of choice for this project is the Windows Azure platform. We will store our data, host our mobile services and connect our client to the could. The client technology will be using mainly HTML5 (and PhoneGap as needed) to be able to target my Android phone, and other platforms as well in the future. It will be a ‘connected only’ app for now. This will be performed in a development environment using Visual Studio 2013 and GitHub. This infrastructure is already available to me and I’m keen on keeping and extending my comfort zone around this tools as much as possible. That way I can be most productive.
Google is (still) our Friend
Google offers the best location services in the field, provided through the Google Maps API Web Services and the Google Places API. Using these two APIs we can search for shops nearest to a certain location and find out what the travel distance between our location and the shops of interest is. Yes, yes, yes … I know Microsoft also provides Bing search and likewise places and location facilities. But IMHO, Bing really sucks in finding stuff compared to Google. And that applies to so many levels including documentation and map search and routes, that I would rather power my Microsoft car by a Google engine.
“But … wait! You just convinced us in the previous blog post that the quality of store location data from Google is not adequate, and you’re starting to use the same right now? Have you lost you mind?” Well no, at least not yet 🙂 To my understanding, the Google Places APIs allow me to upload my personal data points (store locations) into the Google database, and use these exclusively for searching nearest shops. So if I just replicate my store location with Google Places, I’m combining my high quality data with their high quality location functionality.
These are the steps that we’re going to perform, in this particular order to achieve most value first:
- Create a minimum viable product user interface that showcases desired functionality and behavior. Mock the services.
- Allow searching from a ZIP code or address, by converting these to latitude/longitude using the Google Maps API (Geo-coding) on the service side.
- Perform a search for my brand shops near a location using the Google Places API, ignoring the low quality of the data Google returns.
- Using the Google Maps API, find the travel distance between the searched location and the found results (Distance Matrix).
- Create a single brand website visitor and push the results to the Google database.
- Test the location search and ensure the returned data points are valid and can be identified to be the same I just pushed in.
When we have performed these steps, we essentially got a pilot running , with one brand using high quality data. After this, we can extend the number of visitors for different brands, improving the quality of store locations returned by Google as we implement more visitors.
Next post will be less talk and more do … we will start working on our user interface!