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.

Changes:
  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.

Changes:
  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

Todo:
  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.

Changes:
  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)

Todo:
  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.

Changes:
  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

Changes:
  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..

Completed:
  1. Re-work import
  2. Re-work export
  3. Finish CD functionality
  4. Finalize new tabs and implementation
Todo:
  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
  • HD-HDVD
  • 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...

Fixes:
  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...

Changes:
  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

http://caffeinecoder.co.uk/archives/530

My Collection - Release 1.2.8

Bugfix and feature release. Enjoy!!!!

Changes:
  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.
DONE:
  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'
TODO:
  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.

FUN STUFF!!!!

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"
Todo:
  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:
Title,Rating,Category,Status,Type,Rank,UPC

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 ESRB.org 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...