talk to myself, now with Helpshift

talk to myself has just recently crossed the 25,000 download mark! Perhaps to celebrate, or perhaps by coincidence, version 1.3 is now available in the App Store. The biggest improvement is that we added Helpshift as a customer support help desk system. As a user, you can get your questions answered even before you ask! And if you do have to ask, we’ll be in touch with you from right inside the app.

helpshift screenshot

If you’re an app developer, I’d recommend checking out Helpshift. Their focus on native app integration and excellent user experience was exactly what I was looking for. Users get better support and I have fewer emails to respond to – win win!

Open Source: IODProfanityFilter

For a recent version of talk to myself we decided to add a basic profanity filter, in order to help keep the app kid-friendly and reduce the number of reported messages. We searched for an iOS SDK library to help accomplish this task, but there were none to be found. So we made our own, and are sharing it!

IODProfanityFilter is available under the MIT open source license. It’s pretty simple to use in your iOS and Mac OS X apps, and includes swear word lists in 10 languages (courtesy of Shutterstock).

If any developers out there make any improvements, feel free to fork and send a pull request.

This is the first of several bits and pieces we’d like to share. The iOS development community has a great tradition of sharing & open source and we’re happy to contribute!

Academy Professor 1.4 Now Available

Academy Professor icon

Academy Professor just got even smarter! With the new 1.4 update, the best helper app for Hero Academy now includes a battle damage calculator. Put together matchups between units including powerups and effects to preview the outcome of battles. Record as many bookmarked calculations as you wish, both globally and game-specific.

Academy Professor is available on the App Store, is Universal for iPhone & iPad, and is still just 99 cents!

Note: version 1.4 also includes the awesome new icon you see above, designed by Brittney McIsaac. However, we neglected to add it to the App Store itself! Fear not, the icon will show up properly on your device, and we submitted a quick 1.4.1 update to add it to the App Store too.

Damage Calculator

How to go from zero to 400,000 push notifications in one day

Every app developer wants their app to become popular. For a messaging app, sending out 400k push notifications in one day is a good measure of success, right? Not always.. this is a story of how server glitches can make things get out of hand very, very quickly!

Background: talk to myselftalk to myself

Last year I had a funny idea for an app. What if you could talk to everyone else who has the same name as you? Maybe I’d end up chatting with John Travolta or John Cleese. I poked away at the app in my spare time and released talk to myself last fall (its App Store review story is a whole other kettle of fish).

talk to myself is a quirky little free app, and has achieved some mild level of popularity. It’s gotten over 11 thousand downloads and 60 thousand messages posted so far.

When you launch the app, you enter your name, and then you’re in a conversation with other people who have the same name. Say hello, and when others respond you’ll get a push (like any other messaging app).

Besides being a fun side project, it was a good way to learn some new things as a developer. I built it on the StackMob platform, which was a great way to get a server-based app going without having to deal with, you know, a server.

Time for an update!

This January I decided to work on an update for talk to myself, with a few new user facing features as well as improvements on the network side of things. I saw that StackMob had released a new version of their iOS SDK, so I dutifully updated the pod and made the necessary integration changes. There were a few quirks but overall it went pretty smoothly.

One thing I did notice during development was that push notifications weren’t working; I was getting a 404 error. I chalked this up to a glitch in my integration and put it off for a while. Cut to late January, as I’m preparing a beta build. At that point I was making a build that ran against the production backend, and I found that push notifications still weren’t working. A peek at the push notification revealed the problem was much worse than I had thought:

click to enlarge

Push notifications had suddenly gone from around 1300 a day to zero, on or around on January 17th. It wasn’t that users had suddenly stopped sending messages, either. The API usage metrics were looking pretty normal:

click to enlarge

I immediately filed a support request with StackMob and awaited their response.

The fix is in

Just two hours later (at 11 pm their time) I got a response, though I was sleeping. Throughout the following day I sent more technical details and StackMob worked to solve the problem.

Out of nowhere, that afternoon my phone and iPad started pinging. A lot. Non-stop. Push notifications from talk to myself were flooding in faster than the device could display them! And the strangest thing was, they were from all kinds of different names. Normally you’ll just get notifications from people with your name; I was seeing messages from dozens of different names. I immediately sent an email to the technician at StackMob:

email

I quickly checked with friends & colleagues and confirmed that they were experiencing what seemed to be the same thing: every push from every user was being sent to every device (i.e. a broadcast). I sent some more frantic messages to StackMob, while logging in to my Apple Developer account to prepare to revoke the push certificates (basically, pulling the plug). As I was about to do so, the notifications stopped and the StackMob tech emailed to let me know.

The real fix, and the gory details

The craziness over, I relaxed a little and waited as the StackMob technicians continued to investigate the problem. It turned out to be a combination of problems – mine and StackMob’s.

StackMob recently changed their server push API, but the iOS SDK was still hitting the old API. To keep apps working properly, they translate calls to the old API to the new API. Reasonable enough. However, one change in behaviour involved the semantics of what happens when you send a push to an empty list of users. In the old API it did nothing; in the new API it broadcasts to all users.

That wouldn’t have been a problem, except that in talk to myself, lots of users enter the app to find themselves as the first person chatting with their name. They send a message, and the app sends a push to all of the other users in that chat – an empty list of users. Whoops! I had missed optimizing out that call before, since it never did anything. But on that day, it did a lot.

One person installed the app and said “Hi.” Which broadcast a push notification to everyone else who had the app installed – including a number of users who had already been the first with their name. They launched the app and also said “Hi” – causing a tremendous flood of broadcasts!

The broadcast bug was in effect for just 5 minutes. Over four hundred thousand push notifications were sent in that time! Here’s that same chart – but captured later, with January 28th’s data included.

click to enlarge

The above chart has the same date range as before, but the previous 1300 push notifications a day are indistinguishable from zero. Yowza!

Fallout

By the following day, StackMob had determined a solution to the problem. With some trepidation, I gave them the go ahead to flip the switch and activate the fix. I waited a few minutes, and my devices did not go crazy. I fired up the app and sent a message to John from my iPhone, and my iPad pinged. Just once, the right number of times!

Push notifications were working properly again, but there was sure to be some fallout from this event. Every user had been bombarded with at least 40 push notifications in 5 minutes, telling them someone (who didn’t share their name) had sent them a message. There was no such message to be found upon entering the app, of course (keeping with the principle of not sending data in your notifications).

I decided to send out a broadcast of my own, apologizing for the problem and letting people know that notifications were now working properly again. Perhaps that helped, because the app only received one review mentioning the incident (and it was reasonably positive to boot).

One concern was that with an incident like this, you could have a lot of people deleting the app. Fortunately, that doesn’t seem to have happened, and people continue to use the app!

Update ahoy!

Version 1.2 went up on the App Store on February 5th, and includes the optimization to make sure this broadcast problem can never happen again. It also includes automatic smiley faces, the ability to change your name (once) if you make a mistake entering it, and various other fixes and improvements. And while talk to myself may never naturally get to 400k push notifications a day (let alone in 5 minutes), at least I have a good story to tell!

One final note: while this problem did occur on StackMob’s watch, I have to give them props for their rapid developer support response. The fact that their SDK is open source has also been very helpful in diagnosing and fixing problems. I’m happy to continue using them for talk to myself and other projects!

Garden Gnomes!

Garden Gnomes is a client project that Island of Doom has been working on with Lost Lamppost, LLC. It’s a whimsical strategy game, with playful and bright graphics. Island of Doom contributed the graphic art as well as design advice.

The game is now available on the App Store for free!

A bit about Garden Gnomes:

In Garden Gnomes you get to choose your gnome, along with colour options, and then you get to enter the garden to battle your enemy gnome. You can play a match through Game Center or you can play locally with a friend. The garden offers many fun surprises, so I encourage people to experiment with their magical gnome powers.

A bit about Lost Lamppost, LLC:

The company was started in 2012 by Jay Haase and Adam Rademacher. Jay is an IT Consultant and returned Peace Corps volunteer with experience creating IT solutions for organizations in developing countries. Adam is an avid gamer with a “strange imagination.” He currently works in the banking industry. Together they have made a dynamic team and a pretty fun game.

Academy Professor 1.3 is out! What’s next?

It’s been a few days but we forgot to post! Academy Professor 1.3 is now available on the App Store, so go check it out.

Coming up in the next version of Academy Professor is a damage calculator. This feature will allow you to set up an attacker and defender and see how much damage each attack will do, how many turns it will take to knock out the defender, and so on. We want to make it cover every case the game can throw at you, and there’s quite a lot! Stay tuned and we’ll let you know when the update is coming and what to expect.

Coming soon: Academy Professor 1.3 with Shaolin team

Did you think we forgot about Academy Professor? Think again! As soon as the new Shaolin team appeared in Hero Academy, we were on the spot adding support for it to your favorite unit tracking and helper app.

There are a few more tricks up our sleeve, too. If you’ve got a shiny new iPhone 5 or iPod touch with the 4-inch Retina Display, you’ll have more room than ever to see your units. And even if you don’t have a new device, you’ll love the new interface enhancements like updated icons and shrinking empty rows so you can see more of the numbers that matter!

The 1.3 update has been submitted for Apple review and should be available in a little over a week. Until then, have a look at the new features and a teaser screenshot.

– Added support for the new Heroic Team: Shaolin!
– Increased clarity and quality of unit silhouette icons.
– Empty rows now automatically shrink so you can see more full and partially full rows.
– Improved performance of scrolling and count changes.
– iPhone 5 and iOS 6 support.

talk to myself now available, free for iPhone and iPad!

After a long journey through the App Store review process, talk to myself is finally available!

This app came from a simple idea: what if you could talk to everyone else who has the same name as you? That’s exactly what talk to myself lets you do. When you start it up, it confirms your first name and then you’re in a group chat with everyone else using the app who has the same first name!

It might be a bit quiet to start with, since it just launched today and you’re quite likely to be the first one with your name to arrive. But don’t worry, you’ll get a push notification when someone else joins and pipes up, and then you’ve got a conversation!

talk to myself is a free download for iPhone, iPod touch, and iPad on the App Store. Give it a try and talk to yourself around the world!