Today I released Brella, my new free iPhone weather app for commuters! In the App Store now. This app checks NOAA data for rain probability in two locations: where you live and where you work. If the chance of rain exceeds your threshold for the hours that you are out of the house, it tells you to grab your umbrella.
I decided to use NOAA because it is public data and I didn’t want any string attached to the app’s usage. I actually had to dig around to find the hourly rain data that I wanted; it’s not part of their SOAP web service but it’s available as a separate XML feed. I’ll probably open-source this at some point.
I used a local instance of sudzc to generate the SOAP proxy, which required some tweaking. Right now I only use the SOAP proxy to contact the NOAA “zip code to coordinate” translation service, but I want to convert that to AFNetworking to avoid the ugly SOAP stack.
In this app I tried out a new Mediator pattern that acts as the workflow engine between view controllers. I’m not a fan of segues and the tight coupling they encourage. It allows for manual dependency injection of model classes via setters. After I convert all properties to accept protocols, everything will be fully decoupled and easily testable.
In the settings form I created some custom input UIViews to help with using the UIDatePicker and UIPickerView. There are also some categories that extend a few core classes. These will likely be part of a future library.
There are unit tests on the NOAA client that test the core behavior using various mocked sample data. More units tests for other classes in the works.
I’m currently building a .NET service hosted in Windows Azure that will perform these queries and send push notifications to subscribers before they leave for work. This feature will be available as a $0.99 add-on.