Avatar

Lou Paniccia

@loupaniccia / loupaniccia.tumblr.com

I play drums, work as a product manager for Red Bull on digital music stuff, and recently moved to Santa Monica. This is my blog.
Avatar

When I finally get a PS4 I'm going to need to practice to be as good as this kid is at playing my own drum parts on Rock Band.

Avatar

Making Record Clerk: Music Challenge

I recently launched my first iOS app, a music trivia game called Record Clerk for iPhone and iPad.

I've been working in technology for over a decade, but I never actually had any formal background in software development. Most of my professional career has been spent as a product manager working with (and learning from) talented developers and designers -- coding was something I understood abstractly.  I wanted to push myself to develop real software development and design skills to see what I could build entirely on my own.

Initial Idea

Back in 2012 I was working as a Product Manager at NPR thinking about what I could do for the annual NPR Hackathon. I was learning basic JavaScript from https://www.codecademy.com/ and wanted to spend the day coding something. I decided to try and build a simple "Name That Tune" game that could be powered by a radio station's playlist. For the hack day demo, I used a Bootstrap template for design, hard coded the playlist and hosted it all on my local machine. The next day I went back to being a product manager, but kept the idea in the back of my mind.

Learning Swift

My original intention was to build Record Clerk as a responsive web app, but after rebuilding my old NPR prototype in Angular/Node running on Heroku and testing it on a few devices I realized it might work better as a native mobile app.

When I was first learning JavaScript several years ago I took a look at iOS development in Objective-C and felt totally overwhelmed. For some reason, Objective-C didn't click for my brain the way JavaScript did. Lucky for me Apple announced Swift at WWDC in 2014, and by early 2016 there were enough learning materials and open source tools to give it a shot.

Swift was much easier for me to understand than Objective-C. I took a free course on iTunes U from Plymouth University on iOS Development in Swift and got a deal on an iOS 9 Udemy class to reinforce what I had learned.

That was enough to get me started with app development. After I had built several apps for the classes I was taking I felt confident enough to take a crack at my first prototype for Record Clerk.

Prototyping

My first prototype was yet another version of the NPR hack I put together years ago. I used iOS default designs and hard coded a single playlist. Even at this primitive state it felt right, so I continued to iterate by adding support for multiple playlists and tinkering with the design to find a style that worked. I wanted to have a stable prototype ready in time to bring with me on a trip to Washington D.C. where I'd have a chance to get some quick feedback from family and friends.

Here’s what it looked like at the time:

Feedback was generally positive, but there were a few issues that kept coming up:

  • The process for selecting a playlist was confusing. I had wanted to use a fancy parallax effect where the user would swipe left and right to pick a playlist, but people didn't instinctively try that. I ended up replacing the swiping gesture with a button to select a playlist from a list. It didn't look as impressive, but it was easy to use.
  • People wanted to work towards something. Just attempting to get 5 songs correct in a row wasn't engaging enough.
  • I needed a lot more content. Some people didn't like the genres that I had in the prototype. Others were able to complete all the challenges in a matter of minutes.

To solve the last two issues I needed to decide on a business model. After thinking about how I might use in-app purchases or subscriptions to unlock more challenges I realized it might be better to use unlocking challenges as a way to provide more meaning to the game while giving users with specific tastes more options. Rather than force users to pay to unlock content, I could give it all away and monetize through ads.

MVP

With an advertising business model in mind I set out to build an MVP (minimum viable product) that I could ship as Record Clerk version 1.0. There were several things I needed to add to the prototype to get it in shape for the real world:

  • Integrate ads into the game
  • Build hundreds of challenges
  • Build ancillary screens 
  • Polish the UI
  • Pass Apple’s review process

I had already integrated Twitter’s Fabric toolkit for analytics and crash reporting which made it super easy to install MoPub (Twitter’s mobile ad network) to get some banner ads on the bottom of the gameplay screens. MoPub also offered a fullscreen ad unit that could be triggered, but it took me a few tries to figure out where to include it so it wouldn’t interrupt the game’s flow. I found that letting the user opt into viewing an ad after they made a mistake was the most natural time to insert a full screen ad.

There was a lot more I could do to optimize ads, but I put that on hold to move forward on my list and start building challenges. This is when I had the idea to base challenges on years. I looked to the Billboard Top 40 Singles by year for inspiration and decided to make a challenge for each year from 1960-2015 that contained 10-20 songs. After the songs were decided and the playlist was built I tried to find an image to fit with the year/genre. Finding images was the most difficult part of the entire process because I was limited to stock photos and public domain images I could use commercially for free.

When I needed to take a break from creating challenges I’d work on some of the ancillary screens that needed to be built. There are things like the About page, Stats, and a page to credit all of the photographers whose images I used.

As I added more challenges I found that the UI and UX needed some tweaks. I split the Challenge Selection process into 3 steps (Genre -> Decade -> Year), adjusted fonts to make everything easier to read.

When I was about half way done with creating challenges, I invited a handful of friends to be beta testers. I used Apple’s Test Flight to manage the process so it was easy to update the beta when I fixed a bug or added more challenges.

Once I got to a stable build that I liked, I submitted the app to Apple for review. To my relief Record Clerk v1.0 was reviewed and approved very quickly.

What's next

Since the app’s launch I’ve been keeping an eye on analytics and listening to feedback from users to figure out what to do next. As of now, I’m planning a v1.1 release that will optimize the ad units, add support for Spotify users, and add a new genre to the mix.

If you have any ideas or feedback, please let me know at hello@recordclerkapp.com

Avatar

@molten.lava getting called out in front of her self portrait. On display in downtown Pittsburgh from now until May 20 at 937 Liberty Ave. #crawlpgh (at Pittsburgh Playwrights Theatre Company)

Avatar

Intense tv installation (at National Portrait Gallery (United States))

Avatar

Little Boys Blue holding down the Blues Hall Juke Joint on Beale St. (at Blues Hall Juke Joint)

Avatar

Dream catcher made from audio tape by the Death Convention Singers. (at Museum of Contemporary Native Arts)

Avatar

One of my last projects at Red Bull was building a custom photo booth for use at events like this. Psyched to see people are enjoying it! #30daysinla (at The Theatre at Ace Hotel DTLA)

You are using an unsupported browser and things might not work as intended. Please make sure you're using the latest version of Chrome, Firefox, Safari, or Edge.