A Study in Studying

Study Time

This application represents an attempt to bring together, in one place, a demonstration of a subset of my core technical skills.

Having recently accepted a separation package from my last company, I wanted to carve out some time to refresh some of my rusty technical skills, as well as take the opportunity to develop some new ones. Having been a mostly (but certainly not exclusively) Microsoft guy for a while, I chose the .NET MVC framework as my primary area of focus.

Having not written a lot of web-oriented application development code in a while, the learning curve has been admittedly a bit steep. However, in the process of // for(int i = 0; i == whateverItTakes; i++) {study(); research(); apply(); fail(); if (moderateSuccess == true) { break; }} // in bringing it all together, I have rediscovered a certain passion for the process again.

I asked some folks whose opinions I trust and respect for help along the way. I'm probably misquoting, but the basic consensus was, "Go build something, then build something else."

This is my attempt to build something. Perhaps, it might even evolve into something useful.

Feel free to use it. I've made every attempt to keep the data and presentation in tune with the sources, as inconsistent and dirty as they are. It should be right.


About the Data

Weather Data
  • This application represents a summary of the QCLCD (Quality Controlled Local Climatological Data) for the United States. It is based on data from here
  • If you want to learn more about this information, the link above is a great place to start.
  • Please note that this version of the data only goes back to 2005, so the daily summaries I am presenting can only go back that far.
  • For purposes of consistency, I have left all February 29th days from leap years out of this version of the presentation.
  • I know a lot of you would like to see more detailed data, specific to sites and days. For now I am keeping the app simple, for a few reasons. Primary among these are the fact that the amounts of data are quite large (it's already several million rows and hundreds of megs), and it costs money to host this data in the cloud. Secondly, I can't keep working on this forever; I need to get a job.
  • Temperatures are in degrees Fahrenheit.
  • Precipitation is in equivalent inches of water. Different types of precipitation (rain, snow, sleet, hail, etc.) are not differentiated.
  • Wind Speeds are in MPH.

Techie Stuff

Techie Stuff
  • Due to the large number of source files and formats, some automation was required.
  • Download Accelerator was used to schedule and pull down the initial weather data zip archive folders.
  • Extracting the desired files from all the zip archives proved extremely tedious. I built my own small .NET console app to automate the extraction of the files I needed.
  • Most all of the data manipulation work was done in SSIS (SQL Server Information Services).
  • Staging, testing, and production data are all housed in Microsoft SQL Server 2012.
  • Entity Framework provides the ORM layer between the data and the application.
  • The basic infrastructure of the application, including the Station and Summary Tables were built in Microsoft .NET MVC.
  • The Summary Charts were built using the .NET MVC Web API tools. The charts and request forms are powered by JSON objects sent from various APIs.
  • The Summary Charts are visualized using the free version of jChartFX.
  • The production application and data are hosted using Microsoft Azure cloud services.
  • All the source code above is available in my GitHub profile.

About the Author

About Me

Blake McCabe lives and works in Austin, Texas, self-proclaimed capital of just about everything.

If you would like to contact me for any reason, you can do so here.