I’ve given up on Microsoft Windows. Although spent the better part of two decades working at Microsoft and was considered a Microsoft expert, Windows 10 was the last straw and I’ve been running Linux Mint for the past couple of years and love it! Of course, I also needed to move on from Visual Studio and C# development to Java. I have found over the years that the best way to learn new technologies is to dig in and build something. This summarizes that effort.
If you want to start with the final result, you can see it here: Dallas Restaurant Scores..
All projects start with requirements so here’s what I came up with:
- I wanted to learn a bit about MySQL and specifically data import and export. I’ve used Microsoft’s SQL Server since the earliest days, but have had little exposure to MySQL and MariaDB so this was important.
- I wanted to write some JAVA code; particularly the web services layer using the Netbeans IDE.
- I’d like to have something usable and practical. That is, something I could use. I had already “dipped my toe in the water” by writing a weather application. However, I wanted to build something more interesting and that used data.
For the implementation, I thought it would be interesting to write an application that would quickly and easily bring up local Health Reports. I found that the city of Dallas, just to the south of where I live, opens their data to the world, including their restaurant score data. They have an API that exposes JSON. However, I found that the data exposed from their online JSON source is stale and limited and so it proved to not be a good source of data. Fortunately, I could export their entire data set as comma-separated-value “CSV” and then import the full set into MySQL. I only then needed to export everything as a .json data file which is cached by the application.
A rough outline is as follows:
- User opens up the web page with the application and we request the user’s location from the browser. Hopefully, they are viewing on the phone so we know their exact location; but, it will work from the desktop too where someone can post in the street address.
- Once the “location permission” is granted by the user in the browser, the application will use the latitude/longitude provided by the user’s browser and call the MapQuest API to determine if the user is inside the Dallas city limits. I attempted to use my local jurisdiction’s (Frisco) data, but they are not as open as the city of Dallas and required me to pay (in money and time) for a Freedom of Information Request to see the data. What do you think they are trying to hide? Guess I’ll try to eat in Dallas instead of Frisco when I can.
- Assuming the user is in Dallas, the application will then sort through all the reports and retrieve those within a given diameter around the location: either 50 meters, 100 meters, or 1000 meters.
- The user is able to input a street address in Dallas and the application will pull up those restaurants in the distance circle using the address too; might be useful in you are planning lunch and want to make sure the place you eat has passed.