Thursday, December 17, 2009

Out Sick


I'm sorry it has taken so long to put together a post. I am recovering from a case of pneumonia brought on by H1N1 that came within minutes of killing me.

My doctors are telling me I can expect to be completely recovered by April of 2010 (about 4-5 months) and I went back to work this week.

Right now, the work day drains me completely and I am too existed to work on anything when I get home. The midnight power-coding sessions I did to get MyCollection functional are going to disappear until my health recovers more.

I will update the application when I am able. I am working on removing Amazon as a search provider and instead am using Google base. Plus, the Android 2.* API is a challenge so DROID support is busted until then.


Tuesday, August 25, 2009

Playing around with GBase...

I've been experimenting with GBase for the last couple of days. Google offers a really good API for Java and provided it is compatible with Android, I may be moving away from Amazon searches.

One benefit this gives me is the ability for users to backup their data to their Google Docs account. The Amazon searches is something that has been a great boon to my application but the more regions I support, the harder it is to use Amazon as my only search provider.

It looks like I may get to start doing some serious coding again :-)

Saturday, August 22, 2009

MyCollection Pro - Release 1.5.16

Nothing big. I completed the German port so people that set their region (in my application) to Germany will now search the German site.

Friday, August 21, 2009

My Collection Free - Release 1.4.10

Here is the update to 1.4.* to fix the Amazon search issue. I'll try to stay on top of API changes moving forward...

MyCollection Pro - Release 1.5.15

Simple Changes:

  1. Fixed Amazon lookups due to changes in AWS API
  2. Verify database connection sanely before trying to access DB

Barcode search update


It looks like the Amazon AWS searches I use no longer returning reliably. I found that half the movies in my own catelogue no longer return a value (and they did or how else would they get there).

I'm working on a conversion to use Google data for searches but my development time is limited as I get my kids ready to start school again. I'm building quite the laundry list of fixes I need and here's the list:

  1. Conversion away from AWS to Google Data
  2. German port (I had someone do the translation for me)
  3. Chinese port (I had someone do the translation for me)

There are other feature requests of course but these need to be my top priority.

Thursday, May 28, 2009

My Collection Pro - Release 1.5.14

I had to push another update with a change for barcode scanning. I hesitate to call it a fix because the application appears to not be behaving like it did when I originally started to use the barcode scanner.

For example:

My code used to be like this:

if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");

Apparently, the scan activity is not returning RESULT_OK anymore for some people and I switched the code to be like the following:

String contents = intent.getStringExtra("SCAN_RESULT");
if(contents.length() > 0) {
} else {
NotificationHelper.showOkAlert(getApplicationContext(), "NO UPC FOUND", "There was an error from the barcode scanner, please contact support", null);

I'll clean up the error handling and get to the bottom of the issue later, but I wanted to push the change to help me get to the bottom of the issue and give my users some type of intelligible error message.

MyCollection Pro - Release 1.5.13

I pushed out the release which is built against the cupcake API. This version has some changes under the hood for the threading and I tweak the soft keyboard navigation but that's it.

I'm working on using the new slider control to add more sort features and I'm working on changing the search work (I've been making behind the scenes changes for this for some time now) but that will probably be rolled into a 1.6 release.

TODO for 1.5:
  1. Stabilize Cupcake tweaks
  2. Complete thread migration to AsyncTask API
Wishlist for 1.6:
  1. Enable multiple sorts/filters for items though use of sliding drawer
  2. Enable searching by other means (title, actor/author, etc)
Wishlist beyond 1.6:
  1. Integrate goodle app engine API for searching (offload to web service perhaps?)
  2. Use other source than Amazon
I'm really running up to the limit of what I want to do with the application. Anything beyond these items is really fluff and I have enough of a user base that I won't be able to make drastic changes under the MyCollection applications. I may end up writing other applications to handle some of the other requests I get.

Monday, May 25, 2009

MyCollectionFree - Release 1.4.9

I published an update to the free version which is build against the 1.5 API. I do some navigation tweaks for the soft-keyboard and fix a rental bug. I'll wait for the US rollout of 1.5 to be farther along before I publish the update to MyCollectionPro.

Saturday, May 16, 2009

AsyncTask and MyCollection Pro 1.5.13

I'm still working on 1.5.13. I had some UI ideas I've been trying to implement with a sliding drawer to handle additional sort criteria. At the same time, I've been porting my background threads to the new cupcake AsyncTask API.

It is far more convenient and easier to work with than the runable API I had been using. I get a pre and post execute event that operate in the UI thread and a doInBackground event that runs in the background thread. It is the perfect thing for database operations and I like how easy it is to wire into my app.

Once I complete the AsyncTask work, I'll realease what I have. The additional sorts will have to wait for 1.5.14 or possibly 1.6.0. That particular control is a little difficult to follow and the examples I use from the API doc don't work.

Friday, April 24, 2009

Cupcake edition status update

I'm making more progress on 1.5.13 which is the version I will release for Cupcake. I've gotten a bug with rentals fixed and I'm working on the soft-keyboard navigation.

All-in-all, I'm impressed with cupcake and I'm enjoying running it on my phone. The UI polish adds a great deal to the device and only time will tell what we have in store for us.

I'm really excited about what 2.0 will bring. Hopefully Android will become a serious iPhone competitor soon but it will probably have to settle for beating out Windows Mobile and Nokia for the moment...

Wednesday, April 22, 2009

MyCollection 1.5.13 Comming

I'm releasing 1.5.13 updated to the new 1.5 Android API along with a Chinese Port. 1.5 might clear up some of my SDCAR issues and if so, I'll start work on developing some of the remaining popular feature requests.

I tweaked some of the SoftKeyboard options to make things work a little better with my app (the defaults didn't quite work). All-in-all, cupcake should be a good update!

Saturday, April 18, 2009

My Collection Pro - Status Update

I have the application building under 1.5 of the API. Some of the UI polish they did in the new version is not making thinks look all that well so I'm going to have to tweak some things. My tweaks should be backwards compatible with 1.1 so hopefully no surprises.

Monday, April 13, 2009

Android 1.5 API comming

I've just read over the changes to the Android 1.5 API (cupcake anyone) and there is one change in the list that I think might REALLY help MyCollection.

    • New Linux kernel (version 2.6.27)
    • SD card filesystem auto-checking and repair
    • SIM Application Toolkit 1.0

The biggest problem my app has involves dealing with the database on the SD card. Not all SD cards are created equal (in fact, performance across not only manufacture but product line varies greatly) and 90% of the bug reports I get have to do with SD card issues.

Hopefully this will help a bit. I haven't done a lot of development on the app. There are a few feature requests out there people want and I want the app to sit for a while and stabilize. I was releasing updates multiple times a day in some cases and the user community was strained by that.

I still have the framework for non-UPC search results and how to deal with multiple search results. I even have a beta UI for that. I think I'll release that under the 1.5 API and let that gel before making any other changes (wish-lists, SMS message integration, etc).

Monday, March 16, 2009

I don't blog much about personal stuff. In part, it's because I don't do much I feel I should put on the internet outside of my work with MyCollection but I'll give the few friends I have an update:

The kids are fine. All three are doing well and I enjoy interacting with my older two quite a bit. They are unique individuals and it still floors me sometimes just how unique they are. I remember when they were 4 and 3 and my opinion was their opinion and their mom's opinion was their opinion. That little bit of growing up is long past and they each have their own plentiful set of opinions...

My youngest is a great joy as well. I'm a bit older then I was the last time I had one so young and I feel that I'm taking the time to appreciate it more now. It feels a little smoother this time around and I attribute that to my wife and the lessons learned the first time around. Another thing I can say is that having children at 18 is a LOT different then having children at 27 (how old I was when my third was born).

It still floors me how amazing my wife is and how close we are. I see marriage portrayed in so many negative connotations in television and other popular media. Marriage gets portrayed as the end of a man's freedom and the beginning of domestic slavery for the wife. Husbands and wives argue all the time and when they do make up, they set some of the most ridiculous terms for their "surrender." Physical intimacy gets used as a weapon and a means to control the husband in television. Every time a couple has an argument, the woman takes no responsibility for her part in the argument and the man has to crawl back on his hands and knees. It's so sad... I have never felt trapped in my current marriage and my wife and I do a reasonable job taking responsibility for our part in our disputes (the rare times they happen).

I have a friend at work getting married soon and I pray he will be as happily married as I am. Although it's funny to watch him make some of the same mistakes I did early on in my marriage, it's not my place to give advice and every relationship is different so I usually laugh to myself - well mostly to myself - and say a prayer for him and his bride.

Work is going well. My work load picked up and I am anjoying my new role. I switched managers as well and I'm still learning how to work with the new one. Not a bad manager by any means, there is just all those "Here is how I communicate" and "How much do you want me to keep you in the loop". For the most part, my company really tries to work with managers to set good objectives for their employees and I don't have any unrealistic or undefined expectations to work from. Feedback is consistent (although it's all good and that always makes me nervous) and I really can't ask for me.

My house is still a work in progress. There are so many things I want to do with it (one of them being to move out) but I'm trying to balance cost versus benefits. I really want to pave my driveway but I also have some fencing to replace and my carpet probably doesn't qualify as carpet. We had a new roof put on last year as well as new siding. I replaced the water-heater with a really nice unit after the POS Whirlpool unit broke 3 times in one month (came with the house). I had air-conditioning put in three years ago and new front and back doors (steel doors) along with nice fancy storm doors. I've wired the house with CAT5e and new RG6 COAX with a 2Ghz bi-directional powered ampliphier so Time-Warner or ATT Uverse work well here (I've had both). I also have a wi-fi bridge setup to the garage and I have my little geek cave out there.

I got a new geek toy for the car. I have a pioneer in-dash GPS unit with iPod integration and BlueTooth support. It's entirely hands free now and I do feel safer driving. My wife wants one now and the stereo in her van went bonk this year (it's only a 2004...) so that is a good as any.
All-in-all I feel very blessed. I have a great family, a good career, and a roof over my head.

I am also really enjoying learning COCOA and developing for the iPhone. It's fun to get back into C programming. I have always seen C programming as the epicenter of great programmers (leaving assembly programming and machine code programming for the true massicists). Being able to pick it back up so easily is a nice boost to my already inflated ego.

Sunday, March 15, 2009

Trouble in Germany

I'm hearing reports that "My Collection" doesn't work for German devices. I'm going to investigate and see what I find. My guess is it has to do with the Amazon sites I use to search. I'll see what I can find out and report back when I hear anything.

Friday, March 13, 2009

More iPhone Progress

I'm still working on the Android based My Collection application, but I've run into some roadblocks from a UI perspective and I have allowed myself to be pleasently distracted by the iPhone SDK.

I'll get back to "My Collection" as soon as I have an epiphany but for now, I've been able to make some progress with the iPhone SDK:

  1. I now have full Create, Read, Update, and Delte (CRUD) functionality against the "My Collection" database.
  2. I am able to use the UITableView control to display a list of all "items" in a collection (although without pictures for now) and navigate to a details page where a user can edit the items.
  3. The UITableView is updated without a need to re-query everything in the database (preserving your possition in the scroll list BTW).

There are a great many things I need to sort out yet and I'm waiting on an iPhone book I bought to walk me through some sample projects. The development environment is so different, just figuring out how to connect a button to an action is challanging. At least I have worked with the Model View Controller (MVC) paradigm enough now that I'm not confused by that.

Sofar, everything I have done has been an uphill struggle. I'll write individual apps to discover and demonstrate a particular bit of functionality. Once I understand how to do that functionality, I piece it together into a project I'm calling "iCollection" which will become my final Proof of Concept (POC) app to decide if I want to release "iCollection" in the Apple AppStore.

It's very nice to get back into C programming and Objective-C is a nice distraction as well. Since I use the SQLite C API's, I have to work with native C as well; however, there is a wrapper called FMDB which I might use to make things like BLOB retrieval easier from the database.

Also, there are some other design considerations as well. The iPhone doesn't have an SD card slot and has enough internal memory for me to not have to write special code to find the best place to store the database. All memory is internal which is a delight to me personally because 90% of all reported issues with the Android app "My Collection" are releated to the SDCARD and not my actual code.

Also, I might not store the images in the SQLite database as well. I self-contained them in the SQLite database in Android because of issues I had with the SDCARD (no good way to know if it's there). In the iPhone, I can give them an ID and save them to the filesystem and it's SOOOOO much easier to read them in that way:

UIImageView imageView = [[UIImageView alloc] imageFromFile:@"pathToFile.png"];

I have to say the more I work with and get used to the iPhone SDK, the more I like it; however, I do find things that should be simple much harder and things that are usually hard about the same. Android is definately easier to program for but I'll reserve final judgement until I get "iCollection" finished.

Either way, I'm almost done with my lunch break and I have roadmaps to finish. THANK GOD we have a Subway in the building where I work!!!

Monday, March 9, 2009

iPhone Learnings

I've made some progress in my work with the iPhone SDK...

I've written a simple version of the My Collection app which reads data from the existing database I use for the Android version. I'd like to finish up the read functionality and implement adding and editing of items.

My hope is to get a working version and get the learnings I need to build the app on the platform.

The iPhone lets me do things Android doesn't from a user-interface perspective so I'm planning on using the databse from the Android version but the rest of the UI will be unique and totally "Apple".

I actually had an idea where I would allow the user to define their own types and they would create "Search" pages that would show items for their types (I would seed the app with some default search pages).

I can't yet figure out how I'll work in the needed code to perform the Amazon lookups, but that is only a minor hindrance in the grand scheme of things. If I can get the application to have stable CRUD support with a tweaked out UI, the other things should be simple.

Google also ported the zXing API (the barcode scanning engine I use) to the iPhone so that will be the same too.

I'm actually excited about that. I get to use SQLite on Android and iPhone and now zXing is supported on Android and iPhone.

It's a shame that all 7,000 lines of Java code I've put into the Android version are completely useless on the iPhone...

Sunday, March 8, 2009

Experimenting with iPhone development

I've begun experimenting with iPhone development. I have a MacBook Pro and I like the Cocoa development platform even though I'm less than trilled with the "Drink our koolaid or we'll send the zombies after you" attitude of the Mac community.

Honestly, Objective C isn't as big of a problem for me as I thought. Once I got the concept of sending messages to objects and the syncax, it's all good now.

Here is an example of an Alert dialog for agreeing to a license in Android and Cocoa:


new AlertDialog.Builder(AndroidExamples.this)
.setTitle("License Agreement")
.setMessage("EULA TEXT HERE")
.setNeutralButton("Accept", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//Handle click here
.setCancelButton("Decline", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//Handle click here


UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"License Agreement"
message:@"EULA TEXT HERE"
otherButtonTitles: @"Accept"
, nil];
[alert show];
[alert release];

There is a little more such as creating a handler to accept the button clicks. In COCOA, you create a delegate, and in Android you pass in a method (I usually do them dynamically).

I suppose you can argue either way, but I like that COCOA has a single event for the dialog and not for each button. You can do the same in Android by registering the same method for both or by putting the logic in a method and calling the method from the handler.

Either way, it's fun to learn a new language and platform so I'll continue to play around. My goal is to learn enough to port the My Collection application to the platform. I don't know if I'll sell it on the App Store but at least I'll learn something new.

Wednesday, March 4, 2009

Progress on new search methods

I know have all the code in place to allow users to search by fields other than UPC. The most obvious one is title which will be the first one I add. I'm putting together a new "Search" menu option which will bring up a new streen where you select which field you are searching on (Title, UPC, Actor, Author, Artist, etc...) and then enter text (or scan for the UPC) and off you go. Once the results come back, you can long-press them and they will add to your list but you stay on the saerch results - so you can add ALL the Shakira CD's you own :-)

Anyhow, that's where I'm at. It has taken a long time to get here because I have had to go back and re-factor a LOT of code. I didn't do anything to wrong in the first place, but I've pulled out all my Amazon and XML parsing code into a library. The last couple of Pro updates I've pushed had the code in it but not the new screen.

So I've been testing the new search codebase for a week now with no complaints. Now that this appears stable, I'll finish up the new search screen and off we go!

Saturday, February 28, 2009

My Collection Free - Release 1.4.6


  1. I found and fixed a rare import bug where names of movies with just numbers would throw an error
  2. Added a new about page with a link to my blog and a link to the paid version of the app

My Collection Pro - Release 1.5.7

  1. I found and fixed a rare import bug where names of movies with just numbers would throw an error

Friday, February 27, 2009

Market Bug Update

T-Mobile support contacted me back and here is what they have to say:

Yea sorry about the market bug. Our G1 Market team is working on a fix.
If people keep asking let them know to uninstall and refund then
redownload within the 24 hr period. Appears to work for the most part.

T-Mobile Tier III Device Support Technician

Monday, February 23, 2009

My Collection Free - Release 1.4.4

This change incorporates what changes I can back-port from the paid version. Some changes are just not compatible but I've put in what I can.

1. Handle mismatch of album art to artist
2. Fix bug where movie was not selected when loaned out with long-press

My Collection Pro - Release 1.5.6

Simple bugfix release.

1. Fix issue where cover art would not download.

Saturday, February 21, 2009

Android Market Trouble

I'm getting messages from the users that they cannot download the updates from the Android Market. I'm posting some messages on the Google message boards but I encourage everyone having trouble to contact T-Mobile tech-support.

I'm not the only developer seeing this and I need Google/T-Mobile to address the issue or tell us what we are doing wrong...

My Collection Pro - Release 1.5.5

Wow, Carl has just really been helping me out on the bug hunt. In thanks, I've refunded his purchase (it's only 1.99 but at least it's something).

I probably won't refund everyone who finds a bug, but he went above and beyond.

Changes in 1.5.5:

1. First item added to system didn't export
2. Incorrect sort for movies and games

My Collection Pro - Release 1.5.4

Simple change here:

1. Added release date field to games and movies.

This is the last update this week while I work on some of the bigger changes. Some of the code is already in the current release while other bits are still only banding around in my brain.

I plan to add the ability to snap your own cover art pictures, and the ability to properly handle multiple results from a search. The picture taking has been a hot item for a long time and the multiple results is the start or more powerful searching.

Friday, February 20, 2009

My Collection Pro - Release 1.5.3

Just one change:

1. Fixed an export bug

My Collection Pro - Release 1.5.2

Thanks to Carl and mightyab for finding the bugs...

1. Release date now saves ALL the time
2. long-press an item and choose 'Loan out' now selects the movie on the loan screen

Todo for next release:
1. I'm still working on handling multiple results which will feed into other search methods. Progress continues well
2. I'll be adding the release date field to all items. Thanks to Carl for the suggestion!!!

Wednesday, February 18, 2009

My Collection - Update

Work continues on the next release. I've noticed (especially for CD's) that UPC scans can return multiple results. Sometimes this would make the app show the right image but the wrong title (it just depends on how the XML is structured).

I've been able to re-work my XML parser to now dump the multiple results into generic lists and I'm working on the UI to allow the user to select which item they have.

This will pay off 10 fold because I can start allowing searching by other fields such as title, author, and artist. This is a LOT of code to write and I've also written in the release date functionality to this release so hopefully users will be happy.

I've moved all the code into a new package (namespace for your non-Java programmers) and this is quickly becoming a new application (for which I will charge $1.99). I'll continue to support the old version but some of these features are just not compatible with the old codebase (sorry!).

So far, I've been able to keep the databases compatible from the "My Collection" application to this new one but that might not be the case for future releases...

I have removed the code to copy the version 1.0.0 database from the device to the SDCARD; therefore, people upgrading from my first app (My Movies) will not be able to port their database over (sorry, but I had to move on).

I will however support those users by manually upgrading their database for them so they can plug it in to the paid app (this is a huge pain in the butt but I want to at least be good at support).

Friday, February 13, 2009

Paid App Comming

Google finally released the market features to charge for the application. In accordance with the policy, I'm leaving the version that has been out there for the last couple of months and I've re-published the application with a few changes.

The new version is 1.5.0 and the app package is now rather than I've also changes the books to sort by author and then title and the CD's sort by artist and title. I'm planning on releasing a new release where the sort options are configurable now that I've figured out a good way to do it.

Anyone can continue to use the old version and I'll still support both versions the same way I always have. Hopefully, I can finally pay for the developer phone and Android will get more phones on the market.

Some of the weirder bug reports

For a long while I've been getting weird bug reports like, 'last upgrade deleted all my movies' and 'last upgrade made it so I can only enter games', or my favorite 'last uprade force-closes' and other such items.

I've been banging my head against the wall because none of my upgrades did ANYTHING that would delete all the movies or would just force-close.

About 20 releases back, I moved the database upgrade portion of the upgrade process to a background thread and I threw up a waiting dialog saying 'please wait while your database is verified. This can take up to 5 minutes after an upgrade'

It appears that some users got impatient and killed the process and the upgrade was half finished. This isn't a problem for upgrades that alter data, but for the upgrades where I alter the database schema, this causes all kind of nastyness...

Now that I know what is happening, I'm going to try to build restart logic in to the upgrade process but it's not going to be pretty. I really need the upgrade to complete once it starts and determining where it was left off is going to be a real challenge.

I could create a table where I insert the queries to run for an upgrade. The upgrade process will get a query, run it, and then delete it. That way I know which ones I've run but I would have to insert those records and the user could kill that process.

I could inspect the database schema and only run the alters I need (probably the best way). I'll need to get familiar with the metadata commands for sqlite to make this a reality.

Right now, I store all the commands I need to perform on the database in a static array:

private static String[] DATABASE_UPGRADE_FROM_9_TO_10 = new String[] {"ALTER TABLE movies ADD COLUMN author NULL", "ALTER TABLE movies ADD COLUMN artist NULL"};

for(int i = 0; i < DATABASE_UPGRADE_FROM_9_TO_10.length; i++) {

I run these strings in a for loop. I think what I'll need to do is create an object to describe the alter and then create a helper class to check if the update is needed. I'll create an interface or abstract class and methods like Alter, Update, Insert, and Delete and describe the changes I want. The end-result would look something like this:

private static DbOpInt[] DATABASE_UPGRADE_FROM_9_TO_10 = new DbOpInt[] {
new Alter("movies", "add", "column", "author", true)
,new Alter("movies", "add", "column", "artist", true)
,new Update("movies", new String[] {"subtype"}, new String[]{"DVD"}, new String[]{"type"}, new String[]{"DVD"})
,new Update("movies", new String[] {"type"}, new String[]{"Movie"}, new String[]{"type"}, new String[]{"DVD"})

for(int i = 0; i < DATABASE_UPGRADE_FROM_9_TO_10.length; i++) {
if(upgradeHelper.needed(DATABASE_UPGRADE_FROM_9_TO_10[i], db) {

Sunday, February 8, 2009

Stupid Android User Comments

Okay, I'm going to rant for a bit...

I honestly just had someone drop the rating on my app because I didn't add the feature they wanted. They rated me at 3 stars before and now dropped me to 1 star. All I've done since I've built my app is add features users request and I can't please everyone but I can't believe home cruel some people can get over FREEEE software.

If I was 3 stars before and 1 star now and nothing has changed but NEW features requested why users, why did my rating just go down. I wish I could bar people from downloading my app on the market.

The "flaw" as he/she describes it is that I don't automatically populate the movie and game rating as well as the category. Category is nearly impossible because users can enter their own category and I will almost never get a match.

Rating is tricky because Amazon does not provide me with the ESRB or MPAA rating in my lookup. I could use another service but then the lookup would take twice as long and I woud get more user complaints because the lookup is to slow (I already get a few now because of that). Most T-Mobile users are still on edge which isn't that fast.

People keep suggesting that I use other providers such as IMDB but IMDB doesn't have web services and I would have to scrape their website which isn't something I'm willing to do. I need a single and SIMPLE web-service call to get the data I need or it will never be 100% reliable.

I don't want to build a feature into the app that works 70% of the time and I runs the risk of breaking when IMDB changes their website layout.

My application is for cataloging your games, movies, books, and CDs. It started off only cataloging movies but I added the others at the users request.

Once you enter the rating, it doesn't change so the effort involved in selecting the rating is a one-time thing. So is the category but you might argue that can change over time as people define new terms for movies and such.

Okay, I'm done. I just can't believe how rude people can be for something I do in my spare time for free. I respond to almost every user support email the same day, usually in 30 minutes. I'm ready to open source the app and stop development. I'm tired of all the crap I get for something I don't get paid for. Maybe once I start charging 99 cents for the thing I'll be more open to criticism...

My Collection - Release 1.4.2

Release 1.4.1 and 1.4.2 encompass bug fixes. Here are the changes:

  1. Disable loan-out and delete buttons for un-saved new items.
  2. Removed all compiler warnings
  1. Fixed incorrect type list for game. Movie type accidentally snuck in there.

My Collection - Release 1.4.0

I've been trapped in blizzards and sick with the flu so this release is a little longer coming than I would have liked. This is the start of the 1.4.* branch and I'll start taking feature requests...

Changes in this release:
  1. CD now has field for artist and is populated from Amazon lookup
  2. Book now has field for author and is populated from Amazon lookup
  3. Author and Artist are shown in item lists
  4. CD and Book no longer show "Rating" field
  5. Long-press menu on list shows title. This should help with fat-fingers
  6. Fixed some VERY VERY rare force-close bugs
  7. CD and Book export need to use the "Rating" field for the Artist and Author respectively
Things not fixed in this release:
  1. I still can't handle corrupted database files from bad or missing SDCARDS. If the database goes missing during the running of the application, I obviously can't read the data from it. If I ever get an epiphiny and figure out a way to fix this I will; however, my guess is I'll have to wait for Android to officially support apps installed on the SDCARD. This will eliminate SOOOOOO much of my nasty-hack code...
  2. I am still using Amazon as my only search provider. People keep sending me websites I can use but I really don't want to build code to scrape the contents of a URL get get data. That is more than I'm willing to do at this time. I need providers with services that I can use and use for FREE!!!
  3. If you have an 8-track tape of the white album that you bought in 1974, Amazon will probably not find it so please don't submit bug reports because the app won't find your 8-track tapes :-)

Friday, February 6, 2009

Took a little break

I've had some busy things going on this last week and have had to step back from developing for a bit. It's only been a week and people already think I've dropped the app... ugh... Anyhow, I'm starting on the 1.4.0 branch and the first order of business is to make the book and CD sections contain more relevant data (author and artist for one).

I'm still trying to sort out the Amazon lookup. Someone sent me a message suggesting ISBN search for movie when I can't find it by the UPC. This might actually be the thing I've been trying to figure out so I'm going to give it a go.

Friday, January 30, 2009

My Collection - Release 1.3.13

I've changed the code that handles the title sort. I switched from handling the 'The ' and 'A ' in Java to handling it in the query. I really should have done it that way to begin with but I was trying to save processing time in the select query by writing a pre-trimmed value to sort by as a hidden field. The code to trim the 'A ' and 'The ' off at query time was simple enough that I like this solution better and I can drop the extra column at a later date.

Wednesday, January 28, 2009

My Collection - Release 1.3.12

This release adds the functionality to ignore "A " and "The " in the movie title when sorting. This is the last piece of functionality that I consider "Should be there" and I'm putting the 1.3.* branch on maintenance only mode from now on.

NOTE: This upgrade takes a while to run the first time. Every item in your collection gets updated with a hidden field called "title_sortable" which I actually sort by. For collections with thousands of items, it can take a while.

I'll start work on the 1.4 branch soon and I'll consider the numerous feature requests I've been getting and see what I can work up for that branch.

I've already decided that 1.4 will NOT upgrade from any version newer than 1.2. You will just be out of luck if you have an earlier version but my current usage statistics lead me to believe this won't be a problem.

Tuesday, January 27, 2009

G1 and My Trouble With SDCARDS

I have been getting a LOT of reports of application trouble lately that can be resolved simply by un-mounting the SDCARD and restarting the phone.

This situation is starting to remind me of the old Nintendo games where you had to blow in the Nintendo slot to get the cartidge to work again and everyone had their own special way of fixing it:
  • Remove game
  • Blow in game cartridge to the toon of any M.C. Hammer song
  • Blow in nintendo counsole to the toon of "Baby Got Back"
  • Spin around 5 times
  • Put cartridge back in
  • Take back out blow in the game cartridge 5 times to the toon of "Yankee Doodle"
  • Sing "All along the watch tower" backwords in a Spanish accent
  • Watch a full episode of different strokes
  • Put it back in and slam it down really fast and push power
Sometimes, the fixes for SDCARD issues seem just as complicated and convelouted as the old Nintendo resolutions.

I've had to:
  • Unmount my SDCARD in the settings
  • Remove the card
  • Blow in the slot
  • Power the phone off
  • Put the card back in
  • Power the phone on again
As much as I think the SDCARD issues are enough to put the database back on the device, much of my user base just has TOO MANY movies to support that. Some people have collections of 1200 movies or more and their database alone is 30 MB.

I am starting to understand why Google didn't release apps running on the SDCARD as an initial feature and they recomend against storing databases on SDCARDs.

SDCARD support is so crappy!

Anyhow, I'm done with my rant and for now, I'll continue to walk users through fixing SDCARD issues. I just wish I didn't get so many negative comments on the Android Market for issues that are clearly resolvable.

Obviously turning the appliation on should NOT delete every movies in the database (and it doesn't). I don't even have any code that deletes ALL movies. Every DELETE query has a where clause on it such that it can ONLY DELETE ONE MOVIE AT A TIME!!!!!! Why on Earth would I even write a function like that and the fact that they come back when the phone is restarted or SDCARD is re-inserted resolves the problem should be a clue it's not in my control...

Anyhow, just keep the support questions comming. Sometimes it's honestly a bug and I can fix something. Those I like. Just remember to go update your Market comment that everyting is now puppy-dogs and rainbows.

My Collection - Release 1.3.11

Two changes in this release:
  1. Added counts so people have bragging rights on how big their collection is
  2. Fixed a bug on the loans screen where if you deleted a contact or didn't have any contacts in your phone but clicked save, you could never enter the loans screen again.

My Collection - General Update

I've taken a break form developing for almost 3 days now... I came up with an idea on how to impliment a very requested feature (count of items) and I'm going to build that into the next release and close off the 1.3.* branch.

Once that's done, I'm going to re-examine My Collection and take a look at the requested features to see if there is anything I can do. Here are a couple of things I would like to consider:
  1. Build barcode scanner into application so users don't have to install it themselves
  2. Find permenant solution for title sort issues. <- I'm planning on creating a hidden field called title_sortable and setting that to be the title minus 'A ' and 'The '. It's simple, but other solutions took up WAY to much processor
  3. Re-work the loans section to add some of the more requested features (Grouping loans by contact, showing contact and item picture, showing if an item is on loan on the item list, etc)

None of these changes fundamentally change the application which is why I'm staying in the 1.*.* version range. I might release a version 2.0 at some point down the road but, right now, it's too far into the future for me to consider.

Sunday, January 25, 2009

My Collection - Release 1.3.10

I skipped over 1.3.9 because the locale changes I was trying to implement would not work... I finally had to bite the bullet and add an "Amazon Site" option under preferences so the user can pick which site they are hitting.

  1. Import/Export now supports wrapping text in double-quotes so users can import items with titles set to "Sixth Sense, The" to help with sorting.
  2. There is now an "Amazon Site" setting in the preferences tab so users can tell the system to use the UK Amazon. I did this because I can't change the locale at runtime for the UK users where they had US regional phones but were looking up UK movies.
  3. I now trim extra whitespace around the item title which will help with items sorting weird.

Saturday, January 24, 2009

Usage Slowdown == Development Slowdown

I've spent some time getting 1.3.* stable and I'm really not going to add to many features to this branch. I've tweaked the import process to handle imports and exports a little better and I'm still trying to work out setting a locale for the application since some users don't have it set right for the device (at least until Cupcake comes out and they can change it themselves).

For now, I'm going to work through the locale part and push probably the last 1.3.* release. Then I'll start building a list of features for 1.4.*.

I need to address the sorting and I think I'm just going to create a hidden column called title_sortable and strip out 'The ' and 'A ' and see if that does the trick. I might do this for 1.3.* or I might wait for 1.4.*.

I want to leave the database alone since that has been the biggest cause of upgrade trouble ever. My application can handle starting on version 1.1 and upgrading to 1.3 but between those releases, there were 6 changes to the database and it makes for an interesting upgrade process.

Until we get some more android devices on the market, my downloads are probably going to slow down. I reached the next milestone 10k - 50k and I'll ride that out adding a couple small features as I go. I really need more Android phones to build a more stable ecosystem for my app.

Friday, January 23, 2009

My Collection - Release 1.3.8

I've finished the last on my big TODO list for the 1.3 branch. I've had an idea on the non US region lookup issue so I've added a TODO.

  1. Added long-click menu to edit, delete, and loan-out a item
  2. Added long-click menu to edit and delete a loaned-out item

  1. Add locality selection in application preferences since Cupcake isn't comming out soon. It will be local to My Collection only but I'll let the user controll which Amazon I search (UK, CA, FR, US, etc)

Thursday, January 22, 2009

My Collection - Release 1.3.7

I spent some time testing UK lookup and as long as the phone is localized to the UK (which it should be if it's sold in the UK), the lookups work. I was able to lookup every UK UPC someone sent me that they were having trouble with. The UK site looked up all the US movies I have as well so mayble I'll just switch, but for now, I'm obeying the Android rules of localization and it is supposed to work so I think I'll leave it for now in case the Android police try to come and arrest me later.

  1. UK issue is on hold. The localization code works great, I'm guessing this issue will work itself out as Android gets a bigger UK presence.
  2. Removed duplicate Amazon image lookup. Lookups should be a little faster now.
  3. Sharper App icon (Thanks yet again Alexis)

  1. Do on long click menus for items to do quick loan and delete
  2. Wishlist?

My Collection - Release 1.3.6

I've spent some time wiring up the preferences system for the activity. So far, I have two basic preferences. One for showing/hiding tabs, and another to set the default tab.

  1. Added preferences menu for show/hide tabs and setting default tab.

Remaining 1.3.* TODO:
  1. Do on long click menus for items to do quick loan and delete
  2. Figure out the UK lookup issue. I've finally got some people in the UK to send me barcodes
  3. Wishlist?

Wednesday, January 21, 2009

My Collection - Release 1.3.4 - 1.3.5

These two releases were bugfix releases. They both fixed force-close issues that the last bugfix introduced.

  1. Fix bug on loan details
  2. Fix bug on item filter

MyCollection - Release 1.3.3

Only one change:
  1. Added PSP for type under games.

My Collection - Release 1.3.2

Simple fixes:
  1. Improved scroll speed (Thanks AJ)
  2. Show type in list (DVD, Blu-Ray, etc)
  3. Show large star icons for new items.

Categories/Genres in 1.3.*

In order to make it such that categories/genres could be maintained by the users, I had to rewrite that entire section of code. In doing this, there was not a clear upgrade path so users will have to re-enter their category/genre selections.

Moving forward, this should never be a problem again as the new system will last through upgrades and I don't plan on changing it.

My Collection - Release 1.3.1

  1. Missing Blu-ray movies will re-appear. There is a big difference from Blu-Ray and Blu-ray... Oops!

Tuesday, January 20, 2009

My Collection - Release 1.3.0

Okay it's finally out. The changes don't number too high on this release but the effort for the changes was BIG. Here is what's new:

1. Users can now manage their categories (Create, Read, Update, Delete).
2. Types are now more granular (Movies has: DVD, Blu-ray, HD-DVD, VHS, Laser Disc)
3. Application can now do CD's

I've done some code cleanup behind the scenes which should simplify work moving forward. I'm still combing through the feature requests and trying to decide what I want to do for the 1.3.* branch. Here is what I've got so far:

1. Do on long click menus for items to do quick loan and delete
2. Figure out the UK lookup issue. I've finally got some people in the UK to send me barcodes
3. Wishlist?
4. Preferences

My Collection - 1.3.* Progress Update

I've been able to finish the bulk of the functionality now..

  1. Re-work import
  2. Re-work export
  3. Finish CD functionality
  4. Finalize new tabs and implementation
  1. Test upgrade functionality
Not much to do, but this upgrade makes some database changes and I want to go over these with a fine-tooth comb before releasing.

Monday, January 19, 2009

My Collection - 1.3.* Progress Update

The category piece is done now. There are four high-level categories and each has its own list. Those categories are (Books, CD, Games, and Movies). Each high-level category has around 20 different choices and the user can add/edit/delete them as they see fit.

Types are also specific to the item as well:

Movies has:
  • DVD
  • Blu-ray
  • Laser Disc
  • VHS
Games has:
  • Gameboy
  • Game Cube
  • Mac
  • Nintendo DS
  • PC
  • PS1
  • PS2
  • PS3
  • Wii
  • XBOX
  • XBOx 360
Books Has:
  • Harback
  • Softcover
CD Has:
  • Album
  • Single
  • Box-Set
Remaining Todo Items before release:
  1. Re-work import
  2. Re-work export
  3. Finish CD functionality
  4. Test upgrade functionality
  5. Finalize new tabs and implimentation
I'm really close to finishing. I'll try to get the code written this week and then I'd like to release this weekend. That way I have time to handle any bug reports and such.

Sunday, January 18, 2009

Progress With Life

I blog a LOT about 'My Collection' but I'm excited to blog about something different. On top of developing an Android application with 4000+ active users and close to 10,000 downloads, I have a wife, three children, a dog, and a cat.

Tonight will be the first night my youngest is sleeping in his own bed in a room he will share with his brother. My wife and I will finally have our room back!!! As with my first two, I expect the transition to take some time, but if I can just get him going to sleep in his own room, my wife and I can enjoy an hour or two of solitude and alone-time.

Here's to sleep-filled-nights* that I hope to have in the coming years. There is an seven year gap between my youngest and middle child so I had been sleeping though the nights** for several years and it's been an adjustment.

And my grey hair count is up now. I used to be able to name one after each of my children. Then I had to add the pets, then the birds in the bird-houses, then well... I don't really want to talk about it. Here's to hoping it all falls out soon enough...

* Sleep-filled-nights are one of the most rarest and precious of possessions. Parents have been known to beg, borrow, and steal everything up to and including lollipops from babies to gain such a precious possession...

** Reletively through the nights. I occasionally got woken up for vomiting, bad dreams, noises in the house, and because one of my children couldn't find their spoon-shaped-thing.

My Collection - 1.3.* Progress

I've been plugging away on two of the most requested features - User Created Categories and Categories by Type.

I have to create a table for categories and associate the movie to the category. That part is done. I event seed the table with movie categories from IMDB, Game categories from IGN, and Book categories from Amazon.

The next step is to build the set of screens to maintain the categories. Once this is done, I need to tweak the import process and export process since category is no longer kept in the movie table as text.

Then I need to build an update script for the database to handle converting old categories to new categories (the tables changes are done, I just need to update old data).

Hopefully I'll have this out sometime next weekend. After categories, I'll build in CD's and ship the first 1.3.0 release. I might have to combine movies back into a single tab rather than DVD/Blu-Ray. I'm running out of screen space...

Someone needs to build bigger Android devices...

My Collection - Release 1.2.17

Simple update:
  1. Changed application icon (thanks again Alexis)
  2. Added confirmation dialogs when deleting items.

Saturday, January 17, 2009

My Collection - Release 1.2.16

Here is what changed:
  1. Separated DVD and Blu-Ray tab (this is in prep for adding CD's in 1.3.*)
  2. Automatically lookup item info when you scan barcode
  3. Use larger image on item info screen
  4. Code cleanup and general housekeeping in preparation for 1.3.* activities
I built the code to show who the item is loaned out to on the item list screen; however, the list ran SOOO slow. I use a relational database so the rentals table just has MovieId and ContactId along with some other rental specific attributes (time_out, time_in, etc...).

The SQLite API doesn't appear to allow joins in their methods that return a cursor so I have to do 3 separate queries for each row. I would have to do two separate queries no matter what because I cannot join to the contact data from the application database. Once I figure out a way to do it without a big performance hit, I'll add the functionality back.

Source Code Management

I've been making so many changes lately, I decided it was time to use some type of software source code management solution.

I've used CVS, AccuRev, SourceSafe, Team Foundation Server, PVCS, and Dimensions before with mixed successes; however, being as I'm still earning $0.00 on My Collection so my budget was nill. CVS is free but I decided to try Subversion. Subversion was built to handle some of the shortcommings of CVS and most companies I know that use or used CVS have or are migrating to subversion if they don't want a commercial solution.

I decided on the packaged Subversion solution for Windows called VisualSVN.

VisualSVN packages subversion with Apache and a Windows GUI. I also downloaded the eclipse plugin and everything is well managed now. I've already used the diff tools to help me troublshoot some new functionality I'm working on.

Now all I need is an expert QA staff and 12 more hours in the day.

Friday, January 16, 2009

My Collection - Release 1.2.15

Changes in this release:
  1. You can now loan items out from the list or from the edit screen.
  2. Database upgrades or sdcard copy operation not happen in background and a progress dialog is shown to the user.
NOTE: For all the users that upgraded to 1.2.12 or 1.2.14 and the database got corrupted, you will still have to delete the copy on the sdcard. This release will just make it so Android does NOT try to kill the upgrade the next time by running it in the background and I show a progress dialog so the user knows whats happening.

This wraps up all the features I wanted to add to the 1.2.* branch. Here is what I'm thinking of for 1.3.*:
  1. User can add own categories
  2. Categories are by type. So DVD gets a different list than BOOKS and GAMES.
  3. CDs
  4. I'll probably break Blu-Ray into it's own tab. That will make some of the UI things I need to do easier. I just need to make sure I have enough room in the tabs
  5. Anything my users may suggest that I think adds value

Upgrade Disasters...

Okay this upgrade was a disaster... Ugh... My guess is the copy operation to copy the old database to the new location on the SDCARD is timing out and causing a half-copied database.

If this happens, just delete the file on the sdcard '/sdcard/my_collection/my_movies' and restart the application. If you getting a message telling you the application isn't responding, tell it to 'WAIT' not 'CLOSE'!!!

Sorry team!

Thursday, January 15, 2009

My Collection - Release 1.2.14

Arg... Some people don't have an SD card installed and the application was crashing. My bad...

  1. Use the default device-database if sdcard one cannot be created.

My Collection - Release 1.2.12

Finally, SDCARD database is there!!!!!!!! This one was so simple once I figured it out I felt like an idiot but it's done and working. This should take care of the users with over 1200 movies. Hopefully I can move on to the rest of my 1.2.*
TODO items:
  1. Add 'Loan' action from movies page <- new requested feature
  2. Add indicator in movie/game list to tell if item is loaned out.

Database on SD Card Idea

I had an idea for how to quickly get the database on SD card implimented and do so in a way where uses do NOT loose their data. I'll play around with that this weekend since it's one of the biggest items left on my 1.2.* hit-list.

The idea is pretty simple. I've know how to build the custom provider to read data from an SDCARD (well, the theory behind it), but I've stuggled with a way to do it such that the data from the old database is kept in the new database.

So what I intent to do is this... In the onUpgrade method, perform my necessary upgrade to the database on the device, then copy it to the new SDCARD location. Then, in the future, just read it from there. I'll probably run my export routine first just in case, but still... I don't know why I didn't think of that rather than the complicated query solutions I had tossed around before...

Thoank God for showers! If not for them, I would probably never have any ideas that could be considered remotely good!

My Personal Software Development Approach

I've worked in IT for over a decade now and I thought I might blog a bit about how I like to approach software development. I work with a great team of developers at my current employer and I'm reletively happy here; therefore, any comments I may make that sound remotely negative, are in response to the negetive feedback I've gotten on the 'My Collection' application.

By negetive feedback, I don't mean, 'Hey can you make it do this' or 'I think it stinks'. I'm referring to feedback like 'YOU CAN'T CODE FOR CRAP!!!!' or comments that make not-so-oblique references to intelligence, sexuality, political beliefs, religions beliefs, etc....

Here is goes:

No Excuses - Let nothing stop you!

I flunked out of a programming class in high-school and I never let that stop me. Over a decade ago, I had a manger tell me I wasn't going to be a good programmer and I didn't let that stop me. Different people develop differently in their careers. Pick your goal, and don't give yourself any slack in getting there. Set your goal and get to it. If you fail to hit your target, it's YOUR fault not your managers, companies, bosses, or ex-spouses fault. Get it done!

Keep your self-evaluations at the front

I have never liked hearing from my manager how good I am at my job. I know my shortcomings and usually take steps to correct them. What I like to hear from managers is constructive feedback like, "How would you feel about this approach next time..." or "The company has a need for this skill, you might want to check it out"

Don't marry any specific technology

I've been on a few interviews where they have asked me a question like, "Are you a [.NetPHPJavaCC++] programmer?" My answer is always, I use whatever best fits the needs. That doesn't mean I always pick C if I need speed. I have to consider the established infrastructure and company talent pool; however, personally, I try to study frameworks and paradigms and not a specific language. That doesn't mean that while working in a platform or language, you should not take an effort to learn it's idiosyncrasy's. But I've meet a LOT of out-of-work Cobol programmers and they were trying to get up to speed in C# of Java, or some other language.

Don't be afraid to ask for help

I've worked with developers that would spend two days trying to figure out a problem that they could have solved by either a 5 minute Google search or talking to a colleague.

Don't be afraid to admit you were wrong or made a mistake

I'll admit some bosses/companies make this hard but even the BEST golfer rarely hits a hole-in-one.

Don't be afraid to admit you don't know

There is nothing worse than someone who will simply not admit they don't know and worse, make it up. They print tech-manuals because everyone cannot remember everything...

Don't be EVER LIE!!!

This is in reference to the first three really. In software, honestly is always the best policy. If you boss asks you to lie to a customer, quit. It will only get worse from there and they are more than likely lying to you! Instead, try to say things like, "We don't publicize our bugs", or "We had a bug in our code"

Micro changes over time not Macro changes rarely

I've gotten some feedback that I change 'My Collection' to much. I think they are correct, but I also do that intentionally. I am not trying to release every item on my TODO at once and I prefer to roll them out over time. That way, I can isolate the issue if there is a problem and also I just don't have the resources for monolithic releases.

Document now, pay NEVER

Documentation is the key to software maintainability. It should be a law really but since it's not, it should become a compulsive habit at least!

Take constructive an un-constructive criticism with a smile

As much as I hate oblique references to my sexuality, intelligence, etc... It never every pays to shoot back. Most people want to help. I've gotten very little negative feedback and most of the issue people bring to my attention are noteworthy and implemented. Also, make sure you tell someone no rather than ignoring them.

My Collection - Release 1.2.11

I accidentally shipped a beta version for 1.2.10 for about 1 minute. Oops! I really need some good version control now that the app has gotten so big...

  1. Export feature
  2. Prettied up about box
  3. New non-silk icons (THANKS YET AGAIN Alexis Gonzalez)
  4. Rather than disable the Scan Barcode icon, I show a dialog if you don't have Barcode scanner telling you to go get it. Dumb UI thing on my side, and hopefully I'll stop getting 10 emails a day and negetive feeback on the market about it.
Remaining Todo for 1.2.*:
  1. Store database (or at least images) on SDCARD
  2. Add 'Loan' action from movies page <- new requested feature
  3. Add indicator in movie/game list to tell if item is loaned out.
As you can see, I'm working my way through the TODO list. Hopefully I can button this 1.2.* branch up and move on to some of the things I want to do for 1.3.* (User manageable categories, etc...) and get a better idea what a 2.0 might look like.

I keep getting request for the application to track things like VHS, Laser Disc (those 12 inch beasts), CD's, VCDs, etc so I'll see what I can so.

Some people even want my app to play movies but I'm pretty sure that is a resounding no. It's not that I don't want to do an application with media playback, but not in this app. I don't like 'Kitchen Sink' applications and I think they leed to bloatware and unmaintainability.

Thanks again for all the feedback and community support!!!!

Wednesday, January 14, 2009

My Collection - Release 1.2.9

Simple Changes:
  1. Fixed issue with Contact URI query where blank contact names would display
  2. Changed to new icon (THANKS AGAIN Alexis Gonzalez)
I've got a busy weekend so we'll see how much work I can get done this weekend. At some point I need to sleep...

My Collection Blogged

My Collection - Release 1.2.8

Bugfix and feature release. Enjoy!!!!

  1. Fixed Force-Close on search
  2. Added UK region so UK searches should work as long as the device is localized to that region
  3. Removed more silk-icon images. Only have one left.
Remaining Todo for 1.2.* branch:
  1. Pretty up about box
  2. Store database (or at least images) on SDCARD
  3. Add indicator in movie/game list to tell if item is loaned out.

Tuesday, January 13, 2009

My Collection Release 1.2.7

That's right, I've renamed the application from 'My Movies' to 'My Collection' After adding books, I just couldn't call it My Movies anymore so I renamed it.

I removed the default theme and went to the more standard android black/gray theme. That made the tabs easier to see as well as the contrast was better on some of the images I got.

I added the ability to manage books and I changed the main UI to be tabbed. There are 4 tabs (Movies, Games, Books, and Loaned). Hopefully they are self-explanitory.

I'll work on the major house-keeping items this weekend.

Status Update for Todo

Not a lot of progress, but I had to write a little more code for tabs.
  1. Added scan and storage of BOOKS!
  2. Rename 'Rentals' to 'Items on Loan'
  3. Tabify the interface to show 'Movies', 'Games', 'Items on Loan'
  1. Pretty up about box
  2. Store database (or at least images) on SDCARD
  3. Investigate the missing images and trouble I'm having with Amazon
  4. Add indicator in movie/game list to tell if item is loaned out.
  5. Make Amazon searched work in UK

Monday, January 12, 2009

Revised TODO List

I've gotten a lot of feedback by mail and sometimes just the comments on the market about my application. I think the most misunderstood features of my application is the rentals section.

The intention was to keep track of who the user loaned their movies out to. I think most of my users think it is for keeping track of movies they have rented (which sounds useless to me and based on the feedback, the users that thought it was for that purpose found it useless as well).

I'm going to rename the sections to "Items on Loan" and I'm going to change the interface to use tabs. There will be 3 tabs initiall and a 4th one added when I finish books. Here is the revised TODO:
  1. Rename 'Rentals' to 'Items on Loan'
  2. Tabify the interface to show 'Movies', 'Games', 'Items on Loan'
  3. Pretty up about box
  4. Store database (or at least images) on SDCARD
  5. Make Amazon searched work in UK
  6. Investigate the missing images and trouble I'm having with Amazon
  7. Add indicator in movie/game list to tell if item is loaned out.

That's enough for now. I'll probably take care of 1, 2, 3, and 7 work in the next release.

Number 5 should be simple but I'm trying to do it such that I can support all regions Amazon supports and not just US and UK. I at least want Australia because of the Kogan comming out soon.

Sunday, January 11, 2009

MyMovies Release 1.2.6

Another bug-fix release. Sometimes Amazon gives me a URL to an image that doesn't work and I needed to handle it better.

I'll start looking for alternate search providers. I wonder if Newegg has a web service...

MyMovies Release 1.2.5

New maintenance release. Bugs fixed and features stabilized:
  1. You can now only perform a lookup if you have something in the UPC field. It doesn't have to be a valid UPC, just something. I did this because I don't know what the app will scan in the future...
  2. I added a ScrollView around the movie details page. it now scrolls in landscape mode. Thanks to the users for that bit of feedback!!!
I'm still working on my TODO list but it's going to be slow during the week. I basically work on this application from 11:00 PM to 2:00 AM on Friday and Saturday. It might get 30 minutes here or there during the week, but I have a family, career, and home-renovation to manage.

Saturday, January 10, 2009

MyMovies Release 1.2.4

Fixed a stupid force close on my part when user tried to lookup a blank UPC.

Feature Requests - New App New Name?

I've been getting a lot of feature requests from users. Some of them have really helped change the app while others are just out of my reach at the moment.

There are still some things to sort out other than what I have already listed. I need to get the UPC search working in the UK. And for that matter, Australia as well. Kogan is releasing their Android phone on January 29th (I pre-ordered one) and I'm sure Australia will be different from the UK as well.

I've had a couple of people as me for the application to handle books. I already handle games so the name of "My Movies" is probably not a good fit anymore. I've had someone suggest, "My Media" which works for me. But what about "My Library"? I think it sounds to bookish... I could call it My Movies Stuff since Stuff-it is already taken...

Anyhow, I have some housekeeping to do in the code and then I'll finish up the 1.2.* branch. I'll probably add books and user maintainable Genre's in the 2.0 branch.


Databases on SD Cards

This feature is turning out to be a bit of trouble. Apparently, the default SQLite helper class does nothing for this feature; therefore, I need to build my own. Not really a big deal, but I'm struggling on how to upgrade existing databases since essentially, I'll be copying the database to the SD card and then using that.

Anyhow, we'll see where I get from here but this is going to take some serious debugging...

Also I've gotten a report from a user about a force-close on lookup. I wrapped that thing around so many exception handlers I'd probably get yelled at my a real Java developer. My suspicion is that they filled up their flash, and I'm working on trying to replicate it. I really can't get the thing to crash myself. I need an expert QA staff...

My Movies Release 1.2.3

Lots of changes:
  1. Now grab image from Amazon and display in movie details and movie list.
  2. Search not matched not just titles that start with, but contain the letters you type
  3. Added lookup button next to UPC. Menu option was confusing people
  4. Renamed "New From Scan" menu to "Scan Barcode"
  1. Store the database on sdcard. It's getting big now and there isn't a LOT of local storage.
  2. Pretty up about box
  3. Rent a movie out to a friend from the movie list (currently you can only create a rental from the Rental list).
All-in-all, I say this isn't too bad of a start for about 10 hours worth of work. I've read some posts online of people looking to store the sqllite databases on the SDCard so I'll probably start with that next.

Friday, January 9, 2009

My Movies Release 1.2.2

Okay, threading the CSV import and web service lookups were SOOOO painfully easy. It took me 10 minutes to do them both.

That's all for this version. I would like to say I'll let this jell a while but I never can. I'll try to keep working my way down the 1.2.* branch.

Now that I've got the lookup on a thread, I'll probably start grabbing the box-cover images and I'll start that code. I expect that to take me a while so that could be my jell time there...

MyMovies Release 1.2.1

Quick Maintenance Release:

  1. I had an epiphany in the shower and I fixed the game bug. I've been able to scan every XBox 360, Wii, Nintendo DS, and PC game in my house and it works.
  2. I wasn't writting UPC to the database... OOPS
Here is my TODO list for the 1.2.* branch:
  1. Thread the import process and Amazon ws call so the UI doesn't throw an "Application not responding" message. The Amazon call happens rarely and I'm on AT&T Edge so 3g should never see it, but I still want to do it right. The CSV import was always there and it's time I actually get it done...
  2. Store the database on sdcard. It's getting big now and there isn't a LOT of local storage.
  3. Retrieve box image from Amazon and show it. I already pull the URL and I have storage columns in the internal SQL Lite database, but I just need to finish it.
  4. Pretty up the about box...
  5. Rent a movie out to a friend from the movie list (currently you can only create a rental from the Rental list).
As for 2.0.* here are some initial thoughts:
  1. Change the name to something like "Collector" or something other than My Movies. It does games and hopefully more in the future...
  2. BOOKS!
  3. Tabbed list Movies, Games, Books
  4. Make categories editable
  5. CHARGE MONEY FOR IT!!! I'm still in mind of the <$4 but we'll see. I'm spending a LOT of time on this (around 20 hours now) plus the cost of the developer phone(s) plus the cost of missing sleep because I work on this while the family is in bed. It's starting to become an expensive hobby...
Beyond 2.0.*
  1. No idea, hopefully I'll be rich and I can hire a minion to figure it out...

MyMovies Release 1.2.0

Well barcode scanning is FINALLY here. It's still a little beta and it's only working with games presently, but it's there.

I fixed a UI bug where the values you entered when you flip the keyboard out were not saved when you close it (fixed in movies and rentals section).

I added an about page but it's not formatted all pretty yet. I'll clean these things up and release a new version once I get some user feedback.

Status Update on Barcode

All is finally going well for barcode scanning.

I'm able to do the following:

  1. I'm able to invoke the Barcode Scanning application and get the UPC scanned from that app.
  2. Then, I invoke the Amazon web services and I get the XML document back.
The only thing left is to parse the XML Document I get back from Amazon.

I was originally looking to find a quick way to use XPath to pull what I needed but the javax.xml.xpath api doesn't appear available on the Android JRE, so I'm going to have to use SAX and do it the hard way.

Now that I have the dev phone, I spent some time getting the slid-out keyboard functionality working. Now, when you slide the keyboard out and then back, you don't lose your changes or what you typed.

GOSH THAT WAS ANOYING and I'm glad I've got a user community as patient as they are!!!

Additionally, I think I'm going to leave the version in the 1.* schema. I'm thinking of 1.2.0 for barcode scanning. I'm thinking of adding other features to make the app a little nicer based on user requests that can take the app to 2.0 status (Books, Favorites, Updatable categories, etc...)

Wednesday, January 7, 2009

My Dev Phone is Here

My development phone came in the mail so now I can finish developing the barcode scanning. I've decided to use the barcode scanner you can download from the market instead of building my own scanning UI.

The Zebra Crossing (zxing) app, called Barcode on the market, is free and I can call it from my application and have it return the scanned barcode to me when it's done. This way, I can focus on building the code to call the Amazon services.

Hopefully, I'll have the version out that looks up the title from the barcode scan no problem. I'm going to add a 'UPC' column to the movie database to lookups can be re-performed in the future in case of outages.

Tuesday, January 6, 2009

Barcode Scanning Progress

I have my Amazon Associate Account and I've got some code in development that is able to retrieve the movie title based on the UPC on the back of the DVD.

Here are some of my challenges:
  1. The Amazon lookup for UPC only returns the title. I need to find a different one, or get the Amazon ID and perform a second, more detailed, lookup for rating and movie thumbnail.
  2. All Amazon lookup requests need told if it's a DVD or Game which means the UI will need to have that Option.
  3. I need to work out a good and fast XML parsing method. I'm using JAX right now and it works, I want to make sure that's the right thing to do.
I'll keep plugging away at the API documentation and the Google news groups for issue 1.

As for issue 2, I'm thinking of implementing the scanning in a way that you store the UPC and can perform the lookup on demand in the Movie Edit screen. That way, you can specify DVD/Blu-Ray and select "Lookup" from the menu.

I want this to be simple because I have people emailing me telling me they have 400 to 1000 movies and at 10 seconds a movie, they could be using my application for 3 years straight before they can put it down. I'm hoping for no more than 3 steps, preferably 2.

Issue 3 shouldn't be a problem, I just don't want to finalize the code until I'm sure I took the best "mobile phone" appropriate approach.

Monday, January 5, 2009

upcomming development

I've ordered my development phone which hopefully will help me finish he barcode scanning feature. Until then, I'm working on some more tweaks based off of more user feedback.

I'm really impressed with how much feedback I've gotten and all of it was constructive. Right now, most users want barcode scanning. The biggest challange with that is NOT the barcode scaning. Good zxing was a BIG help there. The hardest part is finding a service provider who can perform the lookups.

I've contacted Amazon Web Service to see what free services they offer. I'm hoping to get the following data fields:
  1. Title
  2. Rating
  3. Description
  4. Category (hopefully this will sync with the IMDB categories I use now)
  5. A thumbnail
I've had a request from one user to show a picture of the disc so hopefully this will give us what we need.

As for the next version:
  1. An about page <- Not requested but I need to take care of this to recognize some user feedback and to put some acknowledgements in
  2. More detailed filtering <- I've gotten requests from some users to filter movies by category, rating, and type. I'm planning to leave the title filter at the top and add a colapsable pane to add additional filters
Not much but I like the idea of small incremental changes. I'll probably go to version 1.2.0 with this and let it stabalize then release 2.0.0 which will be barcode scanning version.

Hopefully the Android market will have its payment services setup and I can earn the money back I spend on the development phone and the android account. Also, I'm hoping I can do something like free upgrades or discounted upgrades.

For a price, I was thinking of something simple like $2.99. I'd like to do it for a buck, but Google is planning on taking 30% for the cariers and I need to have some left over after I pay taxes on it.

If they won't offer a discounted or free upgrade option, I will probably charge less so the user community doesn't get sucked dry. Escpecially since a lot of the "upgrades" come from feature requests and feedback from the users.

Sunday, January 4, 2009

MyMovies Version 1.1.5

Simple changes this release...
  • I added an NR rating category per a user request.
  • Fixed display problem with rating on home screen with new movies
I also finally found the root cause of that @$!#* rating star bug on the movie list. The issue was never with the movie being saved to the database with the wrong rating, it was with how the rating was displayed.

It displayed with the rating of the movie directly below it and it had to do with how Android draws items in a list. The list is fed from a CursorAdapter that only fetches how ever many items from the cursor that it has to draw on the current screen. If you insert an item in between, the widgets on the screen were not reset properly and if you had a 5 star movie before, all 5 stars would be enabled even if the movie was only one start. I needed to reset the stars to disabled in the display(Cursor c) method and not rely on them to be reset in the constructor (or the method I call to from the constructor).

That one was tuff...

Saturday, January 3, 2009

MyMovies Version 1.1.4

Just another start-selection bug fix. I must resolve to purchase the actual device soon...

Friday, January 2, 2009

Version 1.1.3

Wow, what a great community!!! I upload a 1.1.2 and 10 minutes later I get a bug report. As it turns out, the world does not have skinny fingers like me and they can't click the tinny star icons. The code actually supported trackball functionality before; however, the UI didn't show the selected star so the user didn't know to perform a track-ball click. I added onFocuseChanged code to buttons so the user sees the change happen. The stars turn blue!

This was the only fix in the app and it took me all of 5 minutes to sort out. I REALLY REALLY REALLY need to buy a G1 so I can test on the actual device...

Still, My user count is over 1400 now so hopefully, I'll continue to get good feedback...

What's Comming Next

I've been able to work out the majority of the pieces I need to put in motion for the barcode scanning lookup of movie titles. I'm trying to find a free service for the lookup, but all the coding is there so it should take long to wire together once I find a good service.

Also, since I don't have an Android phone at all, the camera development is a little tricky. I found a site that has a work around so I'm hoping to use that for the majority of the development...

MyMovies Version 1.1.2

I've been able to add two of the features requested by the users and also fixed two bugs in the process.

The first feature is the inclusion of a Category or Genre. I grabbed the list of movie Genre's from IMDB so hopefully, that should make everyone happy. Also, I added a new feature where you can rate you movie collection. I use a simple 1 to 5 stars system and I display the category and ranking on the movie listing page:

While I was at it, I got rid of the old ugly icon for a new but only slightly less ugly icon. This one contains no borrowed image contact so no worries on licensing...

Unfortunately, the CSV File format had to change because of the new columns. There are now seven columns:

The nasty bug had to do with how android bubled up events. I attached an onKeyUp event to the ListActivity so I could handle people pressing the delete key; however, that event also got triggered when the focus was in the filter box. Hence, if you apply a filter and then delete the contents, you just deleted your filtered items (THANKS Miguel).

The simple bug was I spelled Blu-Ray wrong. The upgrade will change the spelling of all BlueRay and make it Blu-Ray.

Thursday, January 1, 2009

Android App Version 2

So it turns out that integrating with the android contact system was really simple so I wrote the rental activities into the application and you can now loan/rent movies/games to people on your contact list.

I also cleaned up the code a bit and moved away from the Silk icon set for the menu items and instead, I use android global menu images. Hopefully, the application can change as Android gets upgraded. I also selected a lighter theme... I'm sure that means more battery life, but I liked the white background better.

Here we have the new home screen. You can see the game-controller icon for items marked with a type of GAME:

Look at the new Android seeded menu icons:

I'm also disabling menu items if there is no selected item in the ListView. This only happens when an activity launched from the ListView returns and adds/deletes a row:

Here is the new Edit screen. It was easy to add ratings and types because I used the array.xml resource files. I just went to and got what I needed for the games and I've added the TV ratings as well. Why they are not all the same is beyong me:

Same thing with the menu displayed. I really like the seeded menu icons better:

Here is the screen showing the rental list. I tried to consolidate the contact and title into one row; however, the longer movie/game titles went off the screen and it looked terrible. I like this approach better and hopefully, a 500 item catelog won't have all 500 out at a time. I'm thinking of a possible grouping of contacts for a later version:

Same thing with the menu visible:

The edit screen seems really simple and it is. I used a CursorAdapter to bing the Spinners and added methods in my DbAdapter to retrieve cursors to the Android Contacts repository and I created a smaller method for the movies that just returns _id and title:

Once again, same thing with menu:

The import screen didn't change other than code cleanup. I removed some redundant event handlers and added more comments:

Overall, I'm liking version 2 better and I'm learning more and more about Android. I'll try to work out checking-out a movie from your contacts application but I'm not sure where to start there. I'll post some messages to the developers message board and see where I land...