Numu Tracker Blog #1

Jesus Christ.

No one could have adequately prepared me for how difficult it is to single-handedly build an iOS app. Compared to the projects I have worked on in web development, iOS development so far has been around 500% more time consuming and frustrating.

Don’t get me wrong, it’s not bad. It’s just very different. I’m used to being able to just hack things out, but this is a different level. Hacking it out quickly just doesn’t work, for both sides of my project (backend and front end). On the upside, noticing problems on the front end is very easy. But for the backend, issues can pop up much later.

I cranked out the backend for Numu Tracker really quickly months ago just so I could get the app development going. I realize now that the cranking was done too quickly, and that I made a grave mistake: I only tested the import mechanism with artists that had very small release databases. Turns out this entire time I’ve only been grabbing up to 100 releases by certain artists, and depending on the size of that artist, all the releases were only albums.

I’m using a PHP library to access the MusicBrainz database, which was mistake number one. While developing the iOS app I have made attempts to avoid using third-party libraries and code whenever possible. Two reasons for doing this: I want to program these things on my own since I am learning; and I’ve found that relying on other people is generally a bad idea unless you’re paying them.

I broke this rule and ended up with a library that seems completely unaware of the fact that MusicBrainz will limit API lookup requests to 100 results with manual offsets and limits, and never noticed because I didn’t pay attention to any artists with over 100 releases. For a couple months now I’ve been running an automated system on the backend that is missing over half of Nine Inch Nails’ releases.

Furthermore my original planning of backend didn’t factor in the concept of ‘secondary types’ for releases. For example, Nine Inch Nails has several live albums. These are categorized as “Album” as the primary type, which is what I pull in. But they’re not just an “Album”, they’re an “Album + Live”. Numu Tracker is meant to have filters that allow you to filter out live releases and compilations, so importing every live album as “Album” roundly defeats this filter.

Basically, I fucked this shit up. The iPhone app is solid so far, all that stuff works fine so I don’t have to re-do any of that. But I need to rebuild the entire backend of Numu Tracker from scratch, knowing what I know now.