Sunday, October 21, 2012

Retrospective for Offline LibraryThing Book Catalog Browser

My latest hobby application (non-work, created on personal time) is now waiting for various approvals. Reached the exhaustion point, where it's more important to make a release than add new features - or even search for bugs.

Idea without execution is worthless.

There's online development diary "While Developing" started 22 August 2012, about 2 months ago. So what did I do and did I learn anything? At all? Would I do this again? Ever?

"MyBooks" (working title) is an offline book catalog browser for your own books listed in LibraryThing web service. You need to have account there and add your own books either manually, by searching from 800+ online libraries or by scanning book ISBN barcodes.

For those who don't know, LibraryThing is similar to Goodreads - except not as pretty, not as social, but has TONS of data about books and authors. Additionally that data is exact, correct, verified, validated and legal. If you're serious about reading books or professionally deal with books, then you choose LibraraThing. If you just want to have fun with books without paying too much attension to details, well...

While developing the app I used (at least, at the end) following 3rd party libraries:
  • ZBar bar code reader, using already in second iOS project. Easy to integrate, works pretty much out of box, but can be customized. Very reliable, easy to recommend.
  • CSCSVParser was third and last Comma-Separated-Value parser I tried. Main reasons were that it also supports Tab-Separated-Values, can read input file in chunks (less memory, bigger files) and seemed to be better supported than others I checked. Bad points are that it does NOT seem to be supported any more e.g. no ARC support and has several known issues (with fixes). I found and fixed one rare bug myself, but won't go through the trouble of submitting it until project comes back to life
  • Few icons from Galuca Project, since my graphical skills are as limited as graphical tools that I can use. Pretty close to non-existing.
  • Dropbox SDK with lots of integration problems. Totally amazing how many ways app can fail to connect with their service... but I have to confess I improved user experience by hiding login as much as possible. The recommended way was to offer a separate "Connect to Dropbox" button and then other button(s) to do something after that connection. Ugh. Prefer just one button, thank you very much.
  • Few files from MWFeedParser to fix LibraryThing data issues. Their exported CSV is different than TSV in many ways, for unknown reasons. Tried to fix some of those, but now that I've dropped CSV support, should check if I'm using MWFeedParser at all. Anyways, it was best I could find for converting HTML to text.
What else did I learn:
  • Finding testers is tough. Testers than have stamina to go through several iterations over several months are close to non-existing. Actually it's easier to find brand new testers than trying to squeeze yet another comment from an old tired tester.
  • Graphics is tough, if you don't have tools. Tools can be bought, but then you have no idea how to use them for full potential. Might have been easier just to pay someone else do graphics, but this current project is never ever going to cover even smallest fraction of development project... but the app is something I need myself. Let's say I learned a lot about how to (not) create graphics.
  • Motivation is tough. I've been coding this app in bus at 5 AM on my way to work, skipping lunches for quick fixes, sitting on floor of hallways while kids do their hobbies, few minutes after midnight before going to sleep... At some point the initial "let's do this" enthusiasm runs out, definitely when you reach 80-20 point: 80% of everything is done, there's only another 80% left to do.
  • Bug fixing is tough. You fix a bug in a hurry, just to introduce another one elsewhere. The merry-go-round just keeps going on, no stop at sight. You're stuck between features: want to do new cool stuff, but old ones just won't work. Sigh.
  • Release. Release. Release. Ideas without execution are just daydreaming, execution without ideas is just nightmare. Release to validate your idea, release to validate your execution, release to test market, release to Get Things Done. Just release, ok? Release!
Now I'm waiting for Dropbox to review if I may use their API. Added possibility to import files from email attachment, just in case, but Dropbox would be nice. Then I'll submit the app to Apple review.

Can't do a thing, just waiting nervously. Don't want to start v2.0, not yet.

No comments:

Post a Comment