Five Years of FloodWatch

Since August 2010, I've had an app in the iOS App Store named FloodWatch.  It's an app that can be used to monitor rivers, creeks, and other bodies of water all over the United States and its territories.  Its data is sourced from the US Geological Survey.

Specifically, all ~8,000 river gauges in the United States with real-time data capabilities can be accessed from within the app.  The app hits USGS web services directly to retrieve its data.

USGS gauges can report on a variety of data, such as current river height, amount of precipitation that has fallen, and current water flow amount ("discharge"), among other values.  FloodWatch surfaces height, precipitation, and discharge values.  If the National Weather Service has defined flood stages for a particular gauge, those are presented within the app, too.

Who's my target market?  People living within the United States who are residing or have property near rivers, streams and creeks that might be prone to flooding.  These customers have either experienced a flood that affected their property in the past, or they're aware of the possibility and want to keep an eye on their nearby rivers as a result.

First, we'll talk about some history and motivation behind FloodWatch.  Next, we'll talk about how it's performed revenue-wise and against its goals.  This is the story of the past five years.


The idea for it was born out of our home being flooded in September 2009.  I really never paid any attention to the nearby creek, but once it ended up running through our living room, I figured that it deserved a bit more attention.  So, what's the old adage?  "Build an app that you'll find useful, and others will find it useful, too."  That's exactly what I did.

First, let's talk about a little history.  I've been a web developer since 2000, focused primary around PHP and open source technologies.  In 2009, I started feeling like I wanted to branch out a bit by gaining exposure to other languages and platforms.  There was more to life than web development.  iOS was a growing platform at the time, and I had been using a Mac for about four years.  Objective-C and the iOS platform were so wildly different than PHP and web development.  I wanted to challenge myself, and do some development that helped me develop new skills in other areas of technology.

So, I picked up a few books and started to learn.  I spent February - August of 2010 building FloodWatch in the evenings and on weekends.  I figured if I could pick up some new skills, and maybe make a little bit of money, then it's a win-win.

In the early days, I'd strive for "just make it work," with little concern for if I was doing things The Right Way(tm).  This was back in the days of retain/release, and I can't say that I truly understood the ownership aspects of memory management, so I was just retaining things all over the place.  :)  I cleaned up all that mess in later releases, shortly after ARC was introduced.

It's worth remembering that I'm a developer.  I can implement things, but I'm not a designer.  So, the app is generally using stock iOS views and controls.  It's clearly designed by a developer!

FloodWatch went live in the iOS App Store on August 17, 2010.

I stood up a super basic, ugly web site for it shortly after launch.  It's in dire need of some updating.

Motivations and goals

First, I wanted to use this app to grow my skills with Objective-C and the iOS platform.  I've maintained the app over the past five years; it's had a small part in helping me keep my iOS skills up.  For example, I'll always update it around major iOS releases by adopting new frameworks when it makes sense.

Secondarily, I wanted people who also lived near rivers and creeks that might have flooding concerns to find it, and hopefully find that it was a useful tool.  That goal was definitely met, as you'll see below.

FloodWatch has always been free.  It was ad-supported, with Apple iAds running within the app.  I never expected to make a ton of money off of it, and I haven't.  I've added in-app purchases over time to further monetize it, though.


I've done very little marketing over the years.  I've run a few Google AdWords, Facebook, and Twitter ad campaigns around major flood events, but that's it.  If there's flooding happening in the US, I'll tweet about it from @d5gtech.

App Store search is the largest driver of downloads, at least as far as I can tell.  There aren't many relevant results for keywords like "flood", "floods", "flooding" and the like.

It is mentioned on the US Geological Water Web Services Showcase.  It was featured in a book, Death, Decomposition, and Detector Dogs: From Science to Scene as a useful tool for police dogs when searching rivers in search and rescue operations.  Crazy, right?!

I've received emails from members of the US Geological Survey, National Weather Service, Red Cross, tugboat captains, firemen, and recreational fishermen, just to name a few.  The app has been used by many different types of people for many different reasons.  That said, it's my belief that the vast majority of users have real reasons to monitor their local rivers and creeks.


FloodWatch has been used by someone in every state within the United States.  Here are some high-level figures:

  • Total installations, all-time: 28,000
  • Average number of unique users per month: 2,270
  • Total revenue: ~$2,600 (after Apple's cut!)
    • In-app purchases: $720
      • Ad removal units sold: 320
      • Tip jar level 1, units sold: 24
      • Tip jar level 2, units sold: 8
      • Tip jar level 3, units sold: 2
      • Tip jar level 4, units sold: 2
    • iAd proceeds: ~$1,880
  • Approximate number of support / feedback emails received: 250

In general, my purchase conversion rates are terrible.  I'm clearly not doing this for the money.  Instead, it's a pet project, and if you include my time spent in development, it's not profitable at all.  I should've killed this app years ago, but people find it useful, so I keep taking care of it.

My only annual costs to support the app are my Apple Developer Program membership ($99), my LLC renewal ($50), and AppFigures ($108/year).  So, it's "profitable" if you don't include my time.  On average, my Apple deposits are $30-$60/month.  In good months, it's climbed to $100-$120/month.

Diversifying revenue

My user base grew over time, especially during and following major flood events.  People have found the app to be useful, so I've tried to monetize it differently over time.  Along the way, I have added the following sources of revenue and exposure:

  • iAds: [with initial launch]
  • iPad-optimized UI: January 2014 (universal app)
  • IAP to remove ads: January 2014
  • IAP for four "tip jar" levels: April 2015

The in-app purchase additions made a big impact to revenue, but iAds have always been the largest share of revenue annually.  It's an app that people use when flooding is on their minds, which obviously has a strong correlation with mother nature.  Flood events can happen anytime, of course!

Now there's news that Apple will be discontinuing the iAd network.  If that ends up being the case where ads stop running after June 30, 2016, then, needless to say, I'm going to need to change my monetization strategy!

So, why keep it up?

You might be asking yourself "Bah, a lousy $2,800 or so...why bother?"  Great question.

Why do I keep maintaining the app?  Because its goal of helping people has been clearly accomplished.  Sales spike around major flood events in the United States, which tells me people are finding it useful.  They may not use it every day, and only a tiny percentage of them pay for an in-app purchase, but...that's not the point.  The point was to build a useful tool.

Here's a timeline of monthly app downloads directly from iTunes Connect, with flood events annotated.  Click to enlarge the image below:

Here's the breakdown of total number of sessions by state over time in the United States:

What can I say?  I'm huge in Texas and Louisiana.  :)

So, that goal of other people find it as a useful tool?  Mission accomplished.

What's next?

In terms of future development for FloodWatch, I have a few things in mind for 2016.  Among them:

  • Preparing for the iAd network retirement if ads will indeed stop running after June 30, 2016
  • Add social sharing of river status (Facebook, Twitter, etc.)
  • Redesign the UI from the ground up -- move beyond stock views and controls!  This might give it a better chance of being featured by Apple, too.
  • Add Push Notifications when a river's flood status changes (possibly a monthly subscription model)

Obviously this iAd situation would have me completely reconsider the app's strategy.  Frankly, it might be worth killing.  Otherwise, I would have to consider options like:

  • Take it to the paid upfront model; $1.99?
  • Remain free, but move to a monthly subscription model
  • Remain free, and rely on the "tip jar" other other patronage model

Someday, I'd like to spend a greater portion of my time focusing on iOS and Mac development.  FloodWatch has enabled me to develop and further my skills on iOS and Mac platforms, so it's been a very rewarding effort in terms of experience.

The reward

All of the revenue considerations aside, it's great to have played a small role in helping potentially thousands of people all over the US, some of whom may have had their homes and property flooded just like I did.  As you might imagine, going through a natural disaster that affects your home can be a taxing, traumatic experience.  I like to think that my app has been truly useful for at least a few hundred people across the US.

When you consider that, develop and maintaining FloodWatch has been worth it.  It may not be the most profitable venture ever, but it sure is a noble one.

I like that old rule of thumb from above: "Build an app that you'll find useful, and others will find it useful, too."  It's true!

Technical New Year’s Resolutions: 2012

I like to do this every year. It's a reflect and reset-type of thing for me. Here's what I accomplished from last year's resolutions:

I'll keep it short. This year, I want to:

  • Finally release FloodWatch for iPad and Mac. I've already started the static library. This should be done in the first half of the year.
  • Gain a deeper knowledge of PHP 5.3 and 5.4 features, such as namespaces, closures, and traits.
  • Beef up my front end development skills. I've done front end work for months at a time, but never for a long period of time. When I take on this kind of work, I enjoy it, but I want to do more of it in a focused manner. Front end development skills have been my area of weakness for my entire career. I'm a back end kind of guy.
  • Refocus my technical leadership skills. I've led a number of large projects during my career, and I'll get to do more of that in 2012. As a result, I look forward to really sharpening my technical leadership skills with respect to architecture, technical project management, and driving teams of incredibly talented developers.
  • Get back on the conference circuit. For real this time.
  • Blog more. I've started getting back to this recently. I'm going to stick with it.

From where I sit, 2012 is going to be incredible. 2011 was great, but I've got my work cut out for me this year. It's going to be a wild ride. See you around!

What are you going to do in 2012?

Technical New Year's Resolutions: 2011

Better late than never, right? I should've done this in December, but at least it's only two weeks into the New Year.

Last year was a great year. Looking back at my 2010 resolutions, here's what I accomplished:

  • Learn a new language -- really dove head first into learning Objective-C, along with the Cocoa and UIKit frameworks
  • Built and released my first iOS app, FloodWatch

My 2010 resolutions aside, I also managed to make a move to Yahoo!, start to hone my front end developer skills, do some Java work, learn some Hadoop and Pig scripting, learn some Lua, and speak at BarCamp Charleston. It's been a busy year!

I've been absolutely horrible at blogging over the past year, though. Two posts in 2010 is just pitiful and sad. Shame on me.

So, given the look back and the year ahead, here's what I'm challenging myself with:

  • Blog more: This is the biggest resolution of them all. I really need to write a few blog posts a month on whatever it is that I'm working on, when I might have something that can and should be shared with a larger potential audience. More often than not, I complete my tasks at hand and charge ahead to the next ones. I need to take more time to stop, reflect, and share.
  • Speak at more user groups and conferences: ...this is already in the works, too, with my first 2011 talk at Atlanta PHP on February 3, 2011. I'll be talking on the Yahoo! Query Language.
  • Write another article: ...already in the works! Look for it later in the year.
  • Continue to sharpen my development and architecture skills: I've learned an amazing amount of new things during my time at Yahoo! I work with some ridiculously smart people, and am constantly learning from them and becoming a better developer because the people in my environment. I'm loving every single day in the office where I get to focus on code and architecture. This one should be a breeze.
  • Read some of the classic programming books again: Classic books like The Pragmatic Programmer and Code Complete are great to read every few years to keep yourself grounded and humble. This should be one of those years for me.
  • Build another app of some sort, iOS, Mac or otherwise: ...have some ideas here, should be totally doable.
  • Spend some more time with PHP: I haven't written much PHP since mid-2010, so it'd be nice to get back to it. I should contribute to Zend Framework, etc. -- that'd be a great way to achieve this goal, while contributing to the community at the same time.
  • Get back on the conference circuit: I didn't do so well with this in 2010, mostly due to my job change. I'd like to get to at least one PHP, OSS, or development conference in 2011.

So, that's what I'll be doing in 2011. Hopefully I'll be here about 50 weeks from now, recounting how I knocked out every single one of these.

What are you doing in 2011?

iPhone/Mobile Camp Atlanta 2009

This weekend, I attended iPhone/Mobile Camp Atlanta at the King Plow Arts Center. It was great to meet some new, non-PHP-specific faces in the southern iPhone and mobile communities. The crowd seemed to be quite tech-heavy, rather than business-heavy. As such, I learned some new things such as how to handle analytics on the iPhone (use Flurry), how to reduce latency when using Core Audio, and some new-to-me information on parsing XML on the iPhone.

I also dusted off my talk, “Rickroll To Go With WURFL, PHP, and Other Open Source Tools”, trimmed it down for a 30-minute timeslot, and presented it as "WURFL, Device Identification, and Mobile Media".

My talk seemed to go great because, hey, what talk with a little Rickrolling and Ice Ice Baby isn't going to be a hit, right? It was tough to keep it to that smaller timeslot, but it seemed to work well. I was followed by everyone's favorite Microsoft evangelist, Glen Gordon, who was speaking on all things Microsoft.

I definitely walked away with a continued motivation to actually produce a useful Cocoa and/or iPhone app sometime this year, so I'd better hop to it. It's the ideation part that's tough for me, though. And all of the graphic design can be a bit demotivating, too, but there are creative ways to handle that.

Anyways, it was a great event! Hopefully they'll conduct one again next year! Special thanks to Jonathan Freeman of Widgetpress (and all involved) for organizing the event!

PHP/technical New Year's resolutions - 2009

Reflecting on my 2008 New Year's resolutions, I didn't accomplish all of them. The only one I really even began to tackle was contributing to Zend Framework. I participated in PHP TestFest, and my tests ended up making their way into CVS, so that was a nice surprise. I did manage to speak at both php|tek 2008 and ZendCon 2008, so that was good...though not really a resolution of mine.

Regardless, it's been a good year for accomplishing some of my technical- and PHP-related goals. But what about 2009?

Well, since it's public knowledge now, my wife and I are expecting our first child in June 2009 (woohoo!), so I'm going to be taking a bit of time off of the conference circuit. I specifically didn't propose anything for php|tek 2009, because it's due to take place just a few weeks before the kid's due date, so I don't want to be away from home at such an important time. Maybe I'll supplement that with more talks at Atlanta PHP?

So, since I'll be stepping back from conferences a bit, what will I be focusing on? Here are some of my PHP/technical resolutions for 2009:

  • Continue contributing to Zend Framework: With my first proposal now in the state of "Pending Recommendation," I'd like to start drafting a proposal for a Zend_Cache_Profiler of sorts, ala Zend_Db_Profiler. I'll be looking to write up and submit that proposal within Q1 2009, I think.
  • Contribute to php|architect: The 2009 Editorial Calendar for php|architect has been released. There are at least two topics in there that I'd love to write on. Specifically, I want to attempt to adapt my "Rickroll To Go With PHP, WURFL, and Other Open Source Tools" presentation into an article format. That should prove to be an interesting, entertaining challenge.
  • Catch up on my list of technical books I want to read: My Amazon Wish List is filled with all kinds of books that I want to read, so I'm really hoping to get through a handful of them this year.
  • Finish my iPhone game: It's a super top secret idea, of course, but the gameplay is largely done and works well. I've got to work on scoring, how leveling works, preferences, and finally, graphic design. So...I've got a long way to go on that. It's been a great exercise in learning UIKit/Objective-C!
  • Write an OS X Memcached GUI monitoring/profiling client?: I've wanted to build a little OS X desktop app for monitoring the performance of Memcached servers for a while now -- think cool graphs of gets, puts, evictions, bytes used, etc. Something that, if you managed a pool of many Memcached servers, that it'd come in really handy at giving you a snapshot of performance and potential areas of improvement. This would be another great exercise at learning more about Cocoa/Objective-C, too. Desktop software development just feels a bit more legitimate sometimes, ya' know? Or maybe that's just me.

So, I think that's it for now. We'll see how I do this year.

Happy holidays to everyone! See you in 2009.

A slight change in my focus

Just a little note that I'm officially changing my duties around a bit at work. During my three years at Schematic, year one was spent as a Senior Software Developer, the second was spent as a Manager for our Open Source Platforms Group (the PHP team), and for the third, I went back to the hands-on technology side as a Senior Software Architect in OSPG. Now, I've decided to make a move back over to the management side as "Senior Manager, Technology" in our Atlanta office.

"What is this 'Senior Manager, Technology' thing?" you ask? Well, basically, it means I'll be leaving some of my hands-on development duties behind (though still using them occasionally!) to focus on managing a crack team of developers across various technical disciplines. I'll also be helping to match these people up to projects they'd like to work on, helping ensure their career growth is on the right track, that they're happy, enjoying their work and so on. I'll also be actively involved in recruiting and other types of managerial-type activities. I tend to think that I'm a good fit for this role given my years of experience down in the trenches, getting my hands dirty with code and project teams, while also being somewhat business-savvy given my experience and education.

It's a different kind of challenge for me, but I've got some experience with it and am happy to help out our growing technology team in the Atlanta office. I will be working on the occasional project at a high level, such as in a Solutions Architect role, or maybe even acting as a Software Architect from time to time. I'll continue to act as the Platform Chair of our Open Source Platforms Group team, too, which means that I'll continue to be involved in shaping coding standards, best practices, and other key technical processes around Schematic.

"'re a developer! Surely you're not leaving that behind!" you exclaim. Of course not! I'm going to use my spare time outside of work to pursue other things that interest me right now, such as Cocoa and iPhone development as well as working with the Arduino platform to do some tinkering with electronics. And don't worry, I'll still be spending a lot of time with my dear old friends, PHP, Zend Framework, and other open source technologies.

So, this is all very exciting! For the three of you that read my blog, this is a short summary of what I'll be up to for the foreseeable future. See you PHP'ers out on the conference and user group circuits, too!

"Victory is mine!" -Stewie Griffin

Wow, I FINALLY found the one thing I wanted on my Mac -- multiple desktop support.


With Leopard coming sometime soon, Apple's new Spaces feature will likely replace this, but for now, it's going to be a huge help.

And best of all, it's free!