PokePrism - Predict Pokemon Appearances
coded in 3 days before battling it out with pokemon go maker - niantic
POKEPRISM WAS UNLIKE OTHER RADARS - MY APP USED MACHINE LEARNING TO PREDICT POKEMON APPEARANCES FROM HISTORICAL SIGHTINGS
ONCE SOMEONE REPORTED A SIGHTING, THE MACHINE LEARNING MODEL PUSHED REAL-TIME UPDATES TO ALL USERS
AS MORE RADARS HIT THE APP STORE, I HAD TO CODE UP NEW FEATURES IN HOURS TO STAY AHEAD OF THE GAME. THIS FEATURE WAS DRIVEN BY FEEDBACK IN THE APP REVIEWS
BY FAR THE MOST CHALLENGING FEATURE WAS TO NOTIFY USERS WHEN THEY WALKED BY A SPECIFIC POKEMON - APPLE MAKES IT VERY TRICKY TO MONITOR LOCATION IN THE BACKGROUND
THE STORY
In High School, I was a huge Pokemon fan (never mind all the money I spent on Pokemon cards...). Although I don't have time to play video games anymore, I still wanted to check out the app. At a minimum, it's what any iOS dev would do... no?
Turns out that was a bad idea. I joined the Pokemon Frenzy and by Sunday I had visited every Poke Gym in my neighborhood.
Sunday night it hit me.
I would be more motivated to go somewhere if I knew I had a high chance of catching a specific Pokemon. I sniffed around the Niantic API, details redacted, and a few hours later I had a pretty decent model that could target specific Pokemon with over 80% accuracy. Here is a timeline of the secret war that went down for the next week (using my github commit times for this).
July 16, 2016 10:15 PM: Initial Commit. Just XCode default project and my project structure.
July 17, 2016 05:08 AM: Most of the iOS UI Complete.
July 17, 2016 3:01 PM: Finish Niantic magic ;)
July 18, 2016 12:47 AM: Finish map animations and fixed map bugs (iOS).
July 18, 2016 2:48 PM: Added ability to report Pokemon (iOS).
July 18, 2016 2:48 PM: Nap 2 hours.
July 18, 2016 7:21 PM: Added server ability to save and process Pokemon reports (Node).
July 19, 2016 1:52 AM: Fixed bugs, added social sharing.
July 19, 2016 11:11 PM: Added landing page, plugged in Recommendation model.
July 19, 2016 11:11 PM: Submit to App Store. Sleep (it's ok BUD/S Hellweek was much much worse).
July 20, 2016 5:00 AM: Wake up. Start to iterate on ML Model while Apple store reviews app.
July 21, 2016 12:00 PM: App denied :( Need to remove Pokemon Faces. I replace with silhouettes and resubmit.
July 21, 2016 7:02 PM: Learn Elastic Beanstalk and deploy servers.
July 22, 2016 9:20 AM: Apple denies again. I remove Pokemon completely and call them "Monsters."
July 22, 2016 2:10 PM: App approved (but 7 other apps have already launched and are top 10 in the world...)
July 24, 2016 11:07 AM: Mongo didn't scale well. Rewrite app in Postgres. Add better models.
Aug 1, 2016
I shutdown the app. Had to start the Bonobos iOS app so couldn't continue coding at that speed.