Tuesday, April 10, 2012

How to get a bug fixed...


I've been meaning to do a post like this for a little while and with the last update, this seems to be a good time.

If something happens inside the app that causes it to crash, you'll probably see a window like this:


The important thing to do is hit that "Report" button.  I think that a lot of users don't even consider that as think it probably goes off to Google and into a list of a million other reports never to be read.  That certainly is the case for the Microsoft windows version of this screen.  However with Android, these reports come to developer and can be seen in the development console:


The 4 that I have outstanding are minor and happen infrequently, I've left them as "New" so I don't forget about them.  Each of the reports contain a stack trace (what functions were called before the application crashed).  For example, the bug that was fixed for Monday here's part of the stack trace:


Even if you don't understand everything (I don't always either), the important pieces are:
  • The app version
  • When it happened
  • How often it happens
  • What happens (a null exception in this case)
  • Where it happens (class name, file and most importantly line number)
The other bit of information that comes along is provided by the user.  When you tap the Report button you're given a chance to include a note of what you were doing (you could also include beer suggestions or your thoughts on Hockey or Soccer teams).  These notes are optional and not nessacary, but the user who sent in this report also sent a good note on what they were doing.
attempted long press set action on second dock of 4th icon to Music App
This defiantly helps me re-create the bug, but wasn't as important in this case.  Looking at the code I realized what had happened on line 512.  I had a check to make sure that I wasn't going to go out of bounds on my list of buttons and if something caused the buttons to go out of bounds, I cleared everything, displayed a toast message and reloaded the list of buttons.  As far as I can tell that's what happened to this user and instead of exiting when the reload was called it continued on (I missed an exit call).  Which then caused the null error.  The fix for this was very simply to add the exit call.

Hopefully this gives a little insight on how things work behind the curtain.

Tuesday, April 3, 2012

It's been rough...

Since March 13, I've had make a number of releases, sadly only one was a new feature, so just to make a quick refresher of what's been fixed:

  • 1.0.0.20 -- Brought a fix for the application not launching when it was not in a dock (the details were in the last post)
  • 1.0.0.21 -- This was the release of the tablet mode feature (details also in the last post).
  • 1.0.0.22 -- A number of code "fixes"
    • I spent some time with the theme down loader.  This is a good example of me not knowing what I was doing when I wrote it (not that I completely know what I'm doing now).  
      • I moved some code out into threads to avoid Application Not Responding reports 
      • I made some changes to how the dialogs were handled
      • I also localized some strings (I am working on getting everything localized)
    • I also got a report of an infinite spinning dialog when loading the album list which lead me to redo how I did the dialogs for the preference window (making things uniform with the theme down loader)
    • I also fixed the dialogs with slide show (another source of crash logs)
  • 1.0.0.23 -- My changes to the preferences caused a problem with the color picker which resulted in quick release.
  • 1.0.0.24 -- Fixed a problem with the themes loading incorrectly.  Which was pretty much there since the release of the tablet mode release.  The problem (for non scrolling dock users) would cause an icon to be loaded into the dock background instead of it's proper place.  The problem was just some really hard to read code and not being able to flush out all the situations where to use the tablet mode dock background vs the regular dock background.  There were some misorginized parentheses as well.
That should bring us to where we are now... What looks to be a pretty stable release that I can start to build on again.  The stabilization of the code shows in the stats that Google provides me.  Since the release of version 1.0.0.24 I've gained about 100 users in 5 days, and previous to that the amount of active installs stayed pretty level and looking back to the releases that had issues, there were points that I lost users.

I am hopefully going to start on something new here soon and that and that will include two other minor fixes.  One of which is upgrading the PayPal SDK.  It's very frustrating to get error logs and they are related to some random issue with the PayPal code that I don't have control over.


Tuesday, March 20, 2012

Hello IT... Yes, the programmer messed up.

I've been meaning to post this for a week now (wow, time flies when work kicks your ass).  The problem looks to have been due to a change in the launch app when undocked feature that was added for the scrolling dock extension.  It basically boiled down to not encasing things correctly in curly braces {}.  I didn't catch it because I didn't test the app outside the dock (yes, I know bad programmer!).  The app launched and it checked the state of the device to see if it was in the dock.  When the answer was no I check to see if if was launched from the dock.  When the answer to that is no, it shouldn't do anything, but the missing curly braces caused it to exit.  When you do VB .NET for a living, those little things will get you when you're not used to it.

Now for a bit of good news, I finished (what I think) is the last new feature for the scrolling dock.  I'm happy to introduce: Tablet Mode.


Screen shot provided by the super awesome Aussie commenter Omniwolf.  I will be happy to purchase him a beer (or any other beverage of his choice) if I ever travel there!

The Tablet Mode will extend the dock the entire width of the screen and provide a smooth continuous (instead of five icons at a time) listing of your applications.  Tablet mode will only display the applications and actions that you have configured (ie you will not see a blank plus icon).  So, if you only have seven buttons configured, you will only see those seven buttons repeated.  Currently, there is no long press menu when you are in Tablet Mode, as I'm not sure it would work well in this case.  If you are using a theme, you may want to go back and re-download the theme to pick up the tablet dock background image (if applicable to the theme).

The last note about all of this, when I released the hot fix for the app closing issue, I had all of the Tablet Mode code in place but hidden from activation.  I started to get a bunch of error logs in due to some of the Tablet Mode changes, but by the time I realized that the code had changed to the point where I couldn't exactly pin point the issue.  I think that I have them fixed or trapped, but I'm not 100% sure, so if you have problems with the app force closing or if tablet mode just doesn't turn on for you, please let me know.  If I get an error log via the market with the latest version I'll be able to track it down and get it fixed.

What's next?  I'm going to go into maintenance mode for a little while.  I have a couple of minor bug reports that I need to look into.  The Theme Downloader sucks and needs to be looked at.  After that, I'm going to work on the advanced weather add-on.




Monday, March 12, 2012

Hello IT...

While I do prefer that user's email me with issues, I do keep an eye on the comments for bugs and feature requests.  About two weeks ago this was posted:
Not working getting error "Update Location…"
I really didn't think too much about it as there wasn't much to think about (due to the lack of information) other than the XML string issue.  Although later that week I got another similar comment:
No longer works "Updating location" then won't open :( ... Droid Bionic
This started to raise some red flags.  I even got an email from a user who had helped with with issues previously asking about known issues.  I checked the error logs and  there was nothing... I couldn't think of what I would have changed that would cause any kind of problem like this.  Then on Saturday I understood exactly what both of these users were talking about.  I plugged my phone it to the wall outlet and turned on Desk Clock Plus manually.  After touching the icon, nothing happened and then I got the toast message "Updating location..." and then Forced Closed.  I tried it again and still nothing... I pulled a magnet off the fridge and found the magnetic dock switch (which worked).  I tried to think of what was wrong and what I could do and I thought rolling back to version 18.  After some WTF moments, I drew on my years of IT support and all of my learning from my advanced technical degrees.  I turned the phone off and on again...


Yes, that did resolve the problem.  What burns me though, is that it did fix it.  I was under the impression that things like this shouldn't happen in the *NIX environment (Android is based on the Linux kernel and keep in mind I'm not a Linux/UNIX guy).  The only thing I can think of is that the SD card was in some odd state or something as I know that other users have had issues with the themes not working.


Wednesday, February 29, 2012

Latest Update*

There are two new features and one bug fix with the current update:

The fix ended up being a minor one,  I was getting the state of the ringer when the device was added to the dock, but not restoring it when the device was removed from the docked.  So, if the phone was silent when it entered the dock, I would set the ringer state to 'normal'.  Not a catastrophe, but an annoyance.

The first new feature is for all users.  The last update I put in the first feature request from Martina for a one minute background update.  Her next request was for an alternate text color as some of her images are of snow and the white text for those images were being lost.  I did a little research and came up with a way to get the average pixel color and if it's whiter than the threshold level then it will use the alternate color (black by default).    You can set a custom alternate color and this is only in effect when the backgrounds are rotating.

The second new feature is for the scrolling dock to launch an app when un-docked.  When my Moto Droid gets retired from every day use (which will hopefully be soon), its next job is going to be a WiFi remote control for my Media PC which is running XBMC.  The idea is that the phone will run Desk Clock Plus and keep charged in the dock.  When it's time to kick back and relax with some TV, grab the phone from the dock and have it jump straight into the Official XBMC Remote.  I'm sure there's other uses, but that's what I have in mind for me.

Next up... tablet dock mode...

*  I try to be cleaver with the most post titles, but my brain is on fried from work and I couldn't come up with anything.  Possibilities included:

  • Steven King's Dark Tower as this is version number 19.
  • Along that line make a reference to this guy.  HWTL!
  • Or a reference to leap year.


Thursday, February 16, 2012

마스터 (Eighteen)

It's nice when people help out... much like Johannes did for German,  Jonathan volunteered to review the Korean strings.  Hopefully that will help him and the other 45 people that are using my app in Korean.  


Besides that, a minor fix to the night clock that might have been causing it to force close when dimming.  Also, Martina from Munich requested a one minute update on the background image.  I think that it's a little short, but as it was a very simple change I added it in.


I'm also hoping that this update might fix Don and Scott's docking issue (even though there was no change).  


I'm still looking into the alarm issues and I have at least one more thing to look at for omniwolf (Sorry to leave you hanging mate!)

Tuesday, February 7, 2012

A cause for alarm

First, a little note about the update from Friday.  There was a small fix on the preference screen where I was trying update the GUI from a background thread (that's a no-no).  The other fix was that I sat down last week and wrote my own translation app using a combination of .NET, LINQ and Microsoft Translation.  Much like Desk Clock Plus, it was me writing up something to fill my need, so hopefully this will keep all the strings in sync with all the different languages.

Next, Scott left the following comment:
Worked great before the last update Doesn't open automatically when docked anymore. Have to manually open it now. Also, the alarm turns off after every update.
Thankfully he (or someone else named Scott) followed up with an email.  I think his docking issue is something at his end as nothing with that has changed with that ever.  (Update) I got another email from someone else who said that there was an update for the same device (Galaxy S) and after that he was having docking issues.

The reason point of this post is the side bit of information that Scott tossed in about the the alarm turns off after every update.  This was actually a really big thing to me... I had had another user in the comments state:
Dont rely on alsrm The clock is nice BUT DONT RELY ON THE ALARM. It only goes off about a quarter of the time.
That comment was made right around the time that version 1.0.0.7 came out and there was a signification amount of code churn and updates being pushed.  If something is happening with the set alarms after every update then this comment makes a lot of sense.  I don't use the alarm feature of my application very often as I use it at my desk at work (hence the name Desk Clock Plus).  So, I've never set a recurring alarm and therefore never had a recurring alarm set when the application is updated.  As I said when Version 1.0 was released, the Alarm code was taken straight from the Google Source and honestly, I never took the time to review it / understand it.  I think my other two scrolling dock enhancements will have to wait until after this gets taken care of...