Today is a sad day for me; today, I’ve decided to retire Flexile, the first iOS app I ever made. Flexile was a massive project, and in the end it consisted of over 150k lines of code, almost all of them in objective-c. In the end, it never did well, partly because I had no money to advertise (and I hate marketing), but mostly because the app had a high learning curve. I hadn’t realize yet that mobile users want simple and quick, and Flexile was anything but.
This has been a strange couple of weeks for me. For the last couple of years, downloads of Flexile (I can’t even say “sales” because it’s free) have been very flat at a remarkably low level. Despite good reviews and a dedicated user base, I’ve never been able to gain enough exposure to actually monetize Flexile. And so most of the work I’ve done have been bug fixes to keep it stable. Even though it makes me absolutely nothing, I’ve simply been unwilling to kill it after so much work I’ve put into it. But that can only last so long, and lately I’ve been having discussions as to whether it was time to finally kill and pull Flexile from the app store.
New maintenance release with the following:
A couple days ago I released another version of Flexile that included quite a few new features. I also made Flexile free. I know it’s been quite a while since I released an update so I want to explain why and what you can expect of Flexile in the future:
This is a small update to fix issues a small number of users were having that prevented them from backing up… problems I thought I fixed in the previous release.
This will be the inevitable bug fix release for issues arising from the 1.0.8 update.
Yesterday I submitted to Apple, Flexile Update 1.0.8. This is a major update that includes changes to Flexile’s themes and user interface as well as the addition of several new field types and features. For more info, see the release-notes. To be honest, I had hoped to submit this before iOS 7 was released, but like almost every time-goal I have ever set for Flexile, I missed it. I always seem to underestimate exactly how much work goes into features I want to add. Although as far as “misses” go, this one is fairly minor… only a few days.
New Default Theme
So, funny thing happened…. bugs. This last build included an integrated “crash reporting” service, Crashlytics, that compiles and emails me whenever Flexile crashes. While I do a lot of testing, and my beta testers fill in the “gaps”… there’s only so much a dozen people can actually cover in an app as large and as complex as Flexile. Knowing when a crash occurred would help me a lot. So this past update (v 1.0.6) was the first update to include this reporting service in a public release of Flexile. Now, I had been testing/using this service with my beta testers for the last couple of months and I found it incredibly useful. However, I didn’t really know what to expect when it was released into the public. On the one hand, I kind of hoped that not much would happen, as it would mean Flexile was pretty much bug free…. not that I really expected this. On the other hand, getting thousands of crash reports would mean I should really reconsider my chosen profession.
I’ve finally finished the Import and Export for Flexile. The import especially is very sophisticated, allowing for duplication detection, splitting import columns into multiple tables and auto-link generation between related records. Moreover, it was implemented with a drag and drop interface and should make it pretty easy to import your data. Of course, I didn’t neglect export, so you’re data is no longer “trapped” in Flexile.
Submitted to Apple: 5/20/2013
Today Apple has approved version 1.0.5 of Flexile. This version contains a whole bunch of user interface improvements, bug fixes and a few new features. Just about everything in this release is based on the feedback I’ve gotten from users and it contains a lot of improvements designed to make Flexile easier to use and a lot more intuitive. It also represents a very good lesson I learned: Gestures are not king. Previous versions of Flexile relied on gestures to perform a lot of functions in Flexile. Those gestures are still there (and they’re great to use) but I’ve exposed all the functionality now with buttons. There are, of course, quite a few more improvements to this update which you can read about here: Release Notes.
New Features & Changes
The last few days have been very interesting. First, my app was downloaded way more than I anticipated. This makes me nervous because I know it’s not exactly stable at the moment and I hate selling a buggy product. Of course, it won’t corrupt data or anything like that, but there are crashes, UI glitches, issues with Bluetooth Keyboards, and various other issues in the current version. As I mentioned before, I released Flexile as a “soft” release hoping only to get a few adventurous users (and some others that didn’t want to wait). I just didn’t expect to get so many downloads. So I’ve posted a warning in the App description letting people know what they’re getting in to (I really should have done this from the beginning). I’ve submitted an update on 11/9/2012 that fixes pretty much all the bugs and makes Flexile a very stable app. Unfortunately, Apple is taking about 9 days to approve updates so it’ll be a few more days until the update is approved.
Submitted to Apple on 11/09/2012
Ok, so I’m a little late on this blog, sorry. I’ve released Flexile into the wild unknown as a kind of soft release, which means I’m basically just sticking it on the app store with absolutely no fanfare, marketing, promoting or even telling my friends about it (although I was obligated to tell family). I’m doing this mostly because I don’t actually consider Flexile 100% stable enough to promote. Of course, the question then is: “Why am I releasing it if it’s not stable.” Well, I kind of ran into a problem. Once you get a certain place in software development, you start to get a decreasing return on debug testing (fewer and fewer bugs found for the same effort). Generally, you’d turn out a beta and let some adventurous users find bugs for you. But beta testing is notoriously difficult on iOS, and it’s hard to find beta testers when nobody knows who you are. Instead of wasting even more time (I spent about 2 weeks trying to get beta testers, set up the beta testing system, etc) I decided it would be better for Flexile if I risked the dreaded “one-star-reviews” and addressed bugs as quickly as possible, submitting updates to Apple as fast as they can release them, relying on users to help me find bugs. I know, I know, this is an absolutely horrible thing to do, and I know how it sucks to have paid for an App only to find it has bugs. My only consolation to those who feel they’ve been cheated is to assure you that I’m working hard to address all the bugs as quickly as Apple will let me. I listen. Promise. So, if you send me feedback and point out bugs, they will be addressed as quickly as I can get to them.
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.
Submitted to Apple: 10/25/2012
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: