The lesson of the day has been “you can never do enough testing.” I had been working on Today Weather for about a month in beta and had tested what I thought would come up in real world use. I tested messing with the UI, searching for patently silly things in the location search tool, and what would happen if certain browser settings were flipped on and off. I thought I had pretty much all my based covered.
Cut to yesterday afternoon, and things seemed to be going great. The site got links on some popular websites, and it was holding up well to pretty substantial traffic. But then I got a tweet that search was failing for someone and was crashing the site. I asked what they were searching for and wanted to try and see what may be unique about their query that was causing an issue, but it turned out there was nothing wrong with their search, it was every search that was failing, and it was for everyone.
I frantically jumped into my code (thank you Coda for iOS) and tried to narrow down the bug. My code looked fine, and it had been working for weeks in testing without issue. It took me a few minutes to go over to my Google developer dashboard and look up my API status. To my dismay, I saw 100% of current API calls were getting errors.
The problem was that I had hit the free cap on daily API calls, and Google was not returning errors on all geolocation queries Today Weather was sending it. It was just a matter of adding a credit card to my account so that they could bill the 50¢ needed to re-up my account. Not a big deal, but a major hassle, and not a problem I wanted to have on the first big day my site was really getting out there in the world.
So my lesson learned this time is simple: you can test all of your own code a million times, but be aware of what can go wrong with any third party resources you’re using as well.