Thursday, February 25, 2010

IT Zelot's anyone?

I've been spending a lot of time focusing on my family and lifestyle lately after nearly passing away last November and I've come to the realization that there are way to may zelot's in IT and they make me VERY tired.

I don't know what is about IT and software development specifically, but we seem to gather every zellot and paranoid imagionable. I've been railed at for the silliest reasons like not using perfect Camel case, not having all my databases in perfect 3rd normal form, not using XML which is THE PERFECT solution to everthing, the list goes on and on...

I've worked in corporate America and have taken part is MANY large and small projects workign on codebases with 40k files and hundreds of thousands of users and the only thing that I see really holding any team or company up is change and configuration management. Not an imperfect database design, an attribute centric XML schema, or not following the Abstract Factory patter perfectly in your software construction.

In my not-at-all humble opinion, it's rarely the design that causes the biggest problems on a project and NO solution is perfect for every problem. Here are some of the rules I follow:
  1. Design to solve the problem, not to what you can yourself can accomplish
  2. Pick what works first, then try to align to any sane standards your company may have
  3. Turn off the OCD when it comes to design patters, platform choice, and coding standards
  4. Don't take suggested changes as attacts on your competency even when they are
  5. Be willing to accept less than perfection from your peers. I know your better than everyone and no-one can live up to your standards so stop making them try...

Monday, February 8, 2010

MyCollection[Pro|Free] Moving...


I am moving the blog about MyCollection and any other apps I decide to build to a new location here. This new site will be entirely about my applications and is where I will house guides, faq's, and post updates about my apps.

I will keep this blog for a while but most of my updates are on facebook these days...

The Incredible Shrinking App

Apparently, my application's UI is shrinking in android versions l8r than 2.0 (touch, and the new Google sold phone). Not having on of those phones, I have no idea how to fix this so it's going to be trial and error. It is NOT happening in my emulator so I'm really baffled.

I can fix it by porting the app to Android 1.6 but when I do that, I cut off 20% of my market by I pick up another 20% on 2.0 or later. It's a tough call so I'm going to try to fix it without cutting off Android 1.5. I have cut-off pre Android 1.5 but they don't even register on the Android platform usage page:

At least it doesn't crash on start-up for 2.0 or later anymore...

Sunday, February 7, 2010

Mobile phone lessons

I've worked on MyCollection for over a year now and there are some lessons I have learned while developing applications for the mobile phone:

  1. Network connection is shaky at best
  2. Application run-time is never guaranteed, expect nothing to be there
  3. Users want the kitchen sink
  4. Phone processing power varies greatly (at least on Android)
  5. Pushing as much processing needs off to an external device (server, etc) helps performance
  6. Minimize data transferred over radio
Lesson 1, I learned that cell-phone reception where a data connection is more sparse than phone coverage. My app needed to handle no data connection better.

Lesson 2: Android cleans up a lot behind the scenes. When users launched the external extent for barcode scanning, my app got killed sometimes. Handling this is tricky and I'm still not sure I got it right.

Lesson 3: I get so many feature requests it's not funny. Most of them make a lot of sense but would grow the application beyond what I think it should be. If you give the users the kitchen sink, its hard to keep the UI simple and performance good. Maybe I'll take all their suggestions and build a suite of applications some day when I'm 100% recovered...

Lesson 4/5/6: Parsing XML on the phone sucks. No simple way around it. Downloading a large XML document from Amazon and then making extra network calls based on what was in the document stinks. This is not enterprise programming... What I ended up doing was writing a REST service that returned a CSV file. XML is just to expensive over non-3G speeds which is still common for Android phones right now. The service I wrote checks Amazon and Google's GBase and parses the XML for the phone. It returns the results as a CSV file with a content type of plain text which is about as small as I can make the data transfer over the radio.

My Collection Pro - Release 1.6.0

I finally managed to get all the bugs worked out. There are some major under-the-hood changes for this version. First and most important, I now host a web service I wrote to perform the search. I search Amazon and Google's GBase feeds for the item so there should be more search results.

Second, I now pull the region on the device for searches. Having users set their own region on the device proved to be to problematic (most of my support emails/calls were people who did not set the correct region).

Finally, I fixed three crash bugs and this version runs on my droid emulator. It is still built for Android 1.5, but I tested running it on 1.5, 1.6, 2.0.1 (not 2.1 yet, sorry Google phone users...).

I am still not up to 100% strength, but I'm able to work on the program on the weekends now (no more mid-week midnight coding sessions). My doctors tell me I'm doing much better and that I'm developing a spring in my step :-)