So yay! Apple approved Flexile for sale. However, I'm holding the app off the store until I can get an update submitted. I'm doing this because of a slight (but important) change to the way Flexile handles multiple devices. Previously, Views you created on one device type (iPad, iPhone, iPhone 5) would not show up on another device type (but it would show up on other devices of the same type). This meant that if you were using the same database on multiple devices you would have to create a new View for each type. As I've been using the App myself, I notice I was simply creating another view with the same name on multiple devices. So I altered Flexile to carry over Views between device types. Of course, you'll still need to setup the view-formats for each device type (because of the difference in screen formats/sizes). I'm holding the release because to implement this change (which I think is important) would wipe out any previous views. Obviously, I don't want to have to do that to anybody, so holding the release seems the best option. Hopefully the update process is quicker than the new-app submission process.
Today marks a milestone for....well, mainly just me (and my wife). After 1.5 years of development, 45,386 lines of code and a remarkable amount of anxiety, I've finally submitted Flexile to the iOS App Store. Since absolutely no one is reading this site yet I suppose this post is more for historical reference. This App has been "2 months" away from submission for about a year now so it's really nice to finally be able to make a post like this. Here's some fun facts:
- Estimated App Store Size: 3.3mb. Some people might be surprised at such a small size since it appears that the entire app is custom....and it is. Instead of using "background images" all the graphics you see are drawn in code (stuff like: draw line from point a to point b) with only a couple (literally...two images) used for background textures.
- Lines of Code: 45,386 (excluding whitespace). Lines of code don't mean much in the programming world simply because writing styles are vastly different between programmers. I tend to write condensed code with few comments, so I originally estimated the app would have at most 25k lines of code when I released it. It turned into an abject lesson in how useless estimates are.
- Development Time: 16 months full time, plus maybe another 2-3 months part-time. As another useless estimate, I had originally estimated the app would take at most 6 months. I had not only underestimated software development time, but also my anal-retentiveness when developing my own application.
- About half of the lines of code I ended up with were re-written at least once, sometimes as many as 6 times to get a feature working right...and by 'right' I mean: the way I wanted it to work. Probably the most re-writes were done on the code that handles 'zooming' a control to fill the screen.
- The "trickiest" code to get work was probably the "Tap & Hold" to rearrange. Apple doesn't provide anything like this for their Table Views and it was the only thing keeping me from getting rid of that stupid (IMHO) Edit button that was taking up too much space on the Navigation bar. Instead of using "Apple's Rearrange" I essentially mimicked the process by using transparent placeholder view and keeping track of some very tricky, moving indexes.
- The Flexile Icon was drawn by me, using the app "Inkpad" on the iPad in about two days. I had looked into having the icon professionally done but it was more expensive than I could afford ( around $1,300). I didn't want to buy desktop software for it ($600 for illustrator) and using a $10 app on the iPad seemed worth a shot. I was astonished at how easily and how much fun it was to create the logo....not to mention how well it came out.