You may have heard of a game called “World of Warcraft”. One interesting aspect is that server downtime is both frequent and downtimes tend to be long. Sometimes really long. Like 12 hour long.
Often, these downtimes occur on the morning of “patch Tuesday”, when most people are working or at school. Those on the weekday 9-5 schedule rarely see the downtimes.
But those not on that schedule, or in those situations where a long downtime prevents an evening session to relax, waiting for the servers to come back up can be a bit irksome.
There are various widgets, websites, and even a paid iOS app to handle this for you. I’d seen mention of a free iOS app, but it was withdrawn from the store. This seemed to me like a fun little exercise in iOS and backend development that some people might find somewhat useful.
Blizzard posts server status data in JSON format (in addition to their human readable realm status page). It seems pretty straightforward to poll the data and send packets to Apple’s Push Network when a realm changes state.
Right now, the app functional, but ugly. I thought it might be fun to share a bit about how it’s designed, how the backend glues services together, and what the process of making an app actually looks like.
Welcome to the sausage factory!
In the next few articles, I’ll describe the design, process, and state of things. If you dare to follow, you’ll see horrible “programmer art”. You’ll see snippets of test code unfit for human consumption. You’ll see Objective C and Common Lisp slowly come together into a working system of programs. You’ll see the process of going from a rough idea to a real working product.
When it all seems to work, you’ll see the last 20% that takes 80% of the time. The polish. We’ll see if Apple deems it worthy of the iTunes app store together.
Sound like an interesting adventure? Follow along! Follow the RSS feed in the upper right corner and sign up for the mailing list. At this time, I think I might share extra bonus material with the newsletter that doesn’t make it on the blog.