Crash Reporting

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.

Luckily, I didn't get thousands of crash reports.  I did, however, get a few.  Enough of them that I decided to squash them quickly and put out another update.  It's very important that Flexile is stable, which is why I'm using the Crash Reporting service in the first place.  I especially found a very "pernicious" bug in the new Sidebar that occurred if you added, deleted or moved a Table Section.  It's kind an obvious bug, except that me and (I suspect) all my beta testers have already 'fleshed' out our databases so we don't actually mess with that part of the app very much.... <sigh>... a bad oversight.  I've already implemented the fix and submitted the update.  Assuming no more 'major' bugs come in, the update should be approved by early next week (possibly sooner if Apple is feeling efficient).   

If you want more information about the bugs that were fixed, please take a look at the Release Notes for version 1.0.7.

Privacy: I want to assure you that even though Flexile now reports to me when it crashes, no personal information is transmitted.  Essentially, I receive a report that tells me when the crash occurred, some device information (iPad, iPhone, etc) and where in my code the crash occurred.  Your data isn't transmitted.  


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.

From here I plan on updating the website, which has been neglected for far too long.  I expect to be working on that for the next week or so before I jump back into Flexile development.  I am giving thought to doing a little marketing for Flexile.  While it's not quite where I'd like it to be, it is shaping up to be a pretty solid app.  It may just be about time to start getting the word out about Flexile.

I've gotten quite a few requests for a few specific types of fields in Flexile, so I intend on working on those next.  Unlike Import & Export, which took a couple months to finish, I'm hoping to release update a bit more frequently.  This should no only squash bug quicker, but also get new features into user's hands quicker.  No solid promises, but here's what I hope to implement over the next couple months:

  • Concatenation Field... I intend on providing a drag and drop interface.  Along with that, I want to look into developing a ternary condition you can insert into the formula (if ? then : else).  If that's successful, I'll probably port it over to the calculation field.
  • Running Balance Field... I've got some ideas on how to implement this and keep the data current.  I will probably also include with this aggregate total on all number based fields via a bottom toolbar in the recordset.
  • Linked Field... Currently, you can "pull" information from links through aggregate fields, but that's limited to number-based fields.  Instead, the Linked Field will pull a single value from a linked record's field based on certain criteria: First Linked, Last Linked, some <value> equal to <value>, etc.

Spit, Polish and More to Come

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.

Going Forward

There are still quite a few features missing in Flexile, though, so I'm working hard now to get those features worked in.  Since Flexile has stabilized out a bit, I can afford to begin working on one feature at a time.  This should produce shorter release cycles, where updates correspond to at most only a couple of updates.  


Probably the feature I've gotten the most requests for is for Importing files.  This is good, very good.  It means (or I hope it means) people are wanting to use Flexile even more than they are now.  So I have been putting my whole focus now into developing that feature.  I've gotten a lot of the groundwork for it covered now.  I'm hoping to begin testing it in the next week or so and from there I'll submit another update, assuming all goes well.

Upcoming Features

Aside from Importing, I will of course work on "Exporting".  But exporting isn't really as requested, so there may be a few other features that make their way in before I get "Exporting" done.  Right now these are the features I intend on working on (after Import) in the immediate no particular order:

  • Link Field Type - This one is really important.  It allows you to reference (or display) data from a Linked record based on a criteria (first, last, etc).  
  • Concatenate Fields
  • Running Balance - Increasingly I'm finding this would be useful
  • Password Protection - At the very least on the "App" level, but ideally I would like to also have "Table" access level password (pin) protection.
  • Totals: At the bottom of a record list you can pull up a view that display aggregates of the table (totals, min, max, avg).  
  • Column Headers - I am aware that the current system has the potential to waste a lot of space with Field labels in a list view.  I have an idea to add an option to place all labels in a section header instead of with the field itself (similar to a column header).  They would, of course, correspond to each respective field position, so the header would be the same height as each row, but it would allow you to easily create data-dense displays.


I've update some of the website to reflect the new changes in Flexile, but mostly I'm leaving the website alone right now.  It's sad, I know.  There's a lot I need to do with the website, especially in the Support section, but for now I think it's best for me to keep working on the features I'm getting repeated requests for.  Flexile still has a bit of a way to go before it's ready for "prime-time" and I want to make sure most of my attention goes toward making that happen.  However, I will continue to work on updating the website here and there and hopefully get it caught up.

I really appreciate the support I've gotten so far from my users and especially all the beta testers that have, for some unexplainable reason, put in hours testing my app.  Thank you... Flexile quite literally wouldn't be where it is without all of you. and downloads

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.

I want to thank all the people have been sending in feedback and helping work the bugs out of Flexile.  This feedback is exactly what I was hoping to get when I released Flexile and it has been an immense help to me.  I'm looking forward to this next update hitting and starting to actually get Flexile out there for people to review.

And this is only the beginning.  I've got so many ideas on where to take Flexile and I'm looking forward to making Flexile a better product.  I've added a page to keep track of features that I want to include in Flexile here:  While these aren't set in stone they should give you a good idea of where I'm taking Flexile.

I do hope that Flexile will be the product you want it to be.  Please send me feedback.  Even if it's negative, I want to know. I've got thick skin, I can take it.  The more feedback I get the quicker I can respond and make Flexile a better product.  

Flexile Released 11/2/12

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 'jipped' 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.

In the meantime, I hope you enjoy Flexile.  I've enjoyed making it, and I'm looking forward many years of making it better.