This was a project I did for Data Visualization and Rich Media Web Application Development I (I double-counted the project with permission from both professors). This application uses GitHub's and StackExchange's web APIs to retrieve data on how popular a programming language was on their site. It then plots those popularities against each other on a two-dimensional graph, with each data point corresponding to a programming language. Specifically, this gets the number of GitHub repos primarily in the given programming language, and it gets the number of StackOverflow questions tagged with the given programming language.
This project uses the d3.js library to display the graph, keep track of updates to the data, and perform animated transitions. It also uses web workers (check browser compatibility) to concurrently retrieve the data from both websites and keep running the front-end in the mean time. The data retrieval is done through AJAX GET requests.
One challenge with this project is that GitHub limits the frequency of GET requests a user can make, specifically to twenty requests per minute (as of the time this application was developed). On the technical side, this meant that we needed to wait three seconds between each GET request so that they would all be successful. On the user experience side, the dot corresponding to a language is colored red if the GitHub data has not been accessed yet, and it is located on the StackOverflow axis corresponding to the StackOverflow value. Once the GitHub data has been accessed, the dot turns green, and it smootly moves to the correct location, and if its value moves beyond the extent of the graph, the graph smoothly scales to fit the new data point.
If you hover over a dot, information appears to the right of the graph. This includes the raw data of the numbers associated with GitHub and StackOverflow for that language. This also includes a pie chart, showing which website the language is more popular on, based on normalized data. Specifically, it compares the fraction of repos for that language over all repos on GitHub versus the fraction of questions about that language over all questions on StackOverflow (technically, "all" is only the total over the languages considered by this application, rather than a proper "all"). This is done because GitHub has more repos than StackOverflow has questions.
You can double-click to zoom into the graph to get a closer look at the data points in the bottom-left corner of the graph; this can be done repeatedly. You can hold Shift and double-click to zoom out in the same way. Here is a link to a working version of this application.