I've set up a new service called Blizzalert, and I'm really excited about what it can do for fellow skiers & snowboarders. Blizzalert monitors the weather at over 400 mountains across the United States, keeping track of snowfall. You select which mountains you want to watch, and Blizzalert sends text messages letting you know how much snow is coming, where, and when - all before it happens.
I've done this by hooking into a few APIs. An API is an application programming interface, and there are more and more of them coming out every day - Programmableweb has quite the growing list of them.
I hook into the NOAA API, provided by Weather.gov, to get the projected snowfall amount at each of the mountains across the United States. This location is based on the Latitude/Longitude of each mountain - those were gathered in a grueling weekend where I was attached by the eyeballs to Google Maps.
I hook into the Twilio API, which allows me to send text messages (the blizzalerts!) to all of my customers. They provide a lot of other features, like voice calling/receiving and transcription, but for this project I only need to send text messages.
I also hook into the Recurly API in order to handle recurring billing. The service costs $2 per month, and there would be a huge headache involved in programming that billing system (never mind the huge amount of concentration that would be required on security). Instead of taking all that work on myself, I simply let Recurly handle that for me.
Blizzalert is currently watching over 400 mountains across the United States. I'm aiming for 100% coverage, and I'm really close to that goal already. The majority of these mountains are public ski resorts, but I'm also in the process of adding backcountry spots - there are already a few in Colorado that have been added!
The weather that I'm gathering is strictly NOAA-reported projected snowfall via the Weather.gov rest API, so I'm not doing any calculations on my own (yet) and I'm not getting any "second opinions" yet either. They provide this snowfall amount in six hour chunks, and I'm combining these chunks of time for each day into a total projected snowfall for that day. I'm expecting huge improvements in my weather collection & assessment processes as I continue to work on Blizzalert.
I've decided on text message alerts, because this removes all platform barriers. I'm not limited by who has an iPhone, or who has an Android phone - anyone with a mobile phone (or just a Google Voice number) can subscribe to this service. Twilio, the service that allows me to accomplish this, provides an API to voice calling and SMS. This is a brilliantly simple service that was the quickest part of this project, but arguably the most important. I've programmed Blizzalert to send text messages through Twilio for each of my customers once per day and only if there is snowfall projected at at least one of their watched mountains. By using Twilio, and not attempting to create this SMS service myself, I'm saving a huge amount of development time and I'm also future-proofing Blizzalert. Twilio automatically scales on their end so that they can handle however many users that Blizzalert grows to.
While Blizzalert is fully functional at nearly 100% of the ski resorts in the United States right now, I still have a huge path open to me for improvements. I expect to add more and more backcountry spots, have even better snowfall projections, and improve the blizzalerts themselves. I'm really excited about what Blizzalert has to offer today, and I'm thrilled by the possibilities that lie ahead.
17 Dec 2013 Donoku
28 Dec 2012 How to make SublimeLinter work with Ruby & RVM
09 Dec 2012 The tech behind getting Blizzalert into its third season
03 Nov 2012 Little-Corner is now a Heroku-ready Rails app
14 Oct 2012 Sip as a replacement for Pick as a replacement for Digital Color Meter in Mac OS X