iDiscGolf v1.01 Has Arrived!
It has taken longer than expected and undergone quite a few overhauls throughout the process while learning the ropes of iOS development, but iDiscGolf is now available! Before I talk too much about the application I want to take a moment to thank my amazing wife, Anne, in addition to my family and friends for all of their support. I also want to extend a special thanks to Nate and John of FortySeven Media for their contributions and patience. If anyone is looking for an awesome website... or "Kick-Awesome" as they would put it, check them out. They are great and talented guys to work with!
During the development of iDiscGolf I scrapped the project and started from scratch or close to scratch four times.
The first time came shortly after I began and was no big deal. I really had no clue what I was doing at first and so my code was a mess, the interface was just as bad or worse, and everything was broken.
The second time I had a better understanding of Objective-C and the iOS SDK but was trying to provide way too much information (much of it irrelevant) at once and my SQLite database logic started to develop some serious concurrency issues. I experimented with CoreData (Apple's data management framework) and afterwards decided to once again scrap everything.
After the second time I realized that the ad-hoc approach I was taking while designing the user interface wasn't working out very well. I decided to do some in depth UI planning before beginning to code the third time around. This in general was a good thing but in retrospect, I spent too much time over planning. I ended up focusing on details which, while important, weren't mission critical. Additionally, I ended up placing way too much emphasis on the prototype. Don't get me wrong, prototyping is a critical part of any development cycle, but I was essentially wasting time on petty details. During this time I also worked on the graphical direction of the application with Michael Heald of FullyIllustrated, one of the most talented, if not "the" most talented, illustrators I've come across to date. He is also a great guy and a pleasure to work with, so I highly recommend checking out his work and services for those of you in need of a great illustrator. This lead to the third attempt which almost lead to a first release about eight months ago if memory serves me correctly. Then came the hard hitting reality, my application didn't just have memory leaks... it was a memory gusher. While trying to implement a solution which would support the newly designed custom user interface elements, I unwittingly made what felt like my deathbed. Prior to this realization, I thought I had a pretty good grasp on memory management and the order of operations within Apple's UIKit framework. Unfortunately my understanding was flawed. I probably would have caught onto this much earlier but by making the mistake of doing the majority of my testing on the Simulator, I inadvertently compounded the problem as it slowly and silently crept up on me. After this realization I was extremely discouraged and considered giving up more than a few times. It was my wife who saved me from my melancholy self and encouraged me to continue to completion.
Now, this is where I made a decision others probably will never understand, especially from a business perspective. I had to choose if I wanted to continue to pursue the custom UI elements I had come to love, or backtrack to the standard Apple versions. Either way code had to be salvaged, but using the tried and true Apple elements would have been a lot less work to implement. In retrospect, I should have contacted Michael and worked with him on a solution adapted to Apple's cookie cutter UI elements. However, having so much already invested in it, I knew I would regret it for the rest of my life if I didn't see it to the end. Did my decision cost me time? Yes. Did it cost me money? Time is money, right? So yes. Did I gain anything in return? Absolutely. To accomplish what I set out to do I ended up having to dig much deeper than I originally thought was necessary. In doing so I learned a great deal about the inner workings of Apple's UI components, gained experience with additional frameworks, expanded my knowledge of Objective-C, and most importantly, proved to myself that I could do whatever I set out to do. Is my solution flawed? In some ways yes, but in others I feel it is superior. One thing is certain, all things change in time, so never live in the past.
So, while iDiscGolf is now available, rest assured all you disc golf fans, it is far from finished! Work on v1.02 began before iDiscGolf was even in review and will hopefully address any application crashing bugs that may remain, but I'm only aware of two at the moment so no promises It will also include additional high resolution elements for those of you with the iPhone4 and some minor User Interface fixes. Following that release I will focus on adding some minor but helpful navigation options and give the user control over various settings. As you will notice, the settings button on the "Home" tab is currently disabled. This isn't a bug, but is annoying, so I will be taking care of that very soon. After that I have some really fun things planned. So keep an eye on this blog for future details.
On another note, now that a great weight has been lifted from my shoulders I will be looking for projects to work on as an independent contractor. If you know of anyone looking for an experienced iPhone, iPod Touch, iPad developer, please let me know. I have yet to determine my rates but I assure you they will be very competitive at first, and I'm willing to negotiate, so don't wait too long