Friday, August 17, 2012

Previously on Desk Clock Plus...

It's been a month and a half since the last post.  Work and life in general has had me running like crazy with little time (or motivation) to work on the clock program let alone update the blog.  Since the last post on July 2, here's what's changed:

  • A number of smallish bug fixes that came up from any number of reporting methods (see: How to get a bug fixed.)
  • A quick hot fix because one of things I tried didn't work... 
  • Two new features:
    • Orientation Lock
    • Static background color
  • Caught a potential NULL value
  • Fixed a display bug for 100+ degree days
That brings us up to today's minor update which is just adding 1 minute to the screen saver time out.  I promised this to a user back in December, but I forgot about it.  Sorry!

I have been working on Desk Clock Plus when I can since the last post, but I haven't gotten anywhere really.  The game plan is to break the application up from one big project into a number of smaller libraries and one execution project.  This will then allow me to swap parts of the application out on a version by version basis. The real push for this is the Alarm code which is still based off the 2.2.  I had to maintain that version of code as it pretty much worked for all the different versions of Android.  Google made a major improvement for 2.3 which I'm not using.  The goal is to build a legacy version of the alarm and then other versions for 3.x versions and for 4.x versions.  Libraries are key to keeping all that code manageable by re-using all the common code among 3 different versions.  The problem is the code is so interlaced that can't quite get the code split up correct to avoid circular references (ie two libraries that reference each other, which leads to the chicken vs the egg problem). 

Earlier this week, I came to the conclusion that the on-the-fly design method really wasn't working (there's a big surprise) and I'm going to have to sit down with some design tools and figure out how I can break up the application that works for now and should work for future enchantments.

Monday, July 2, 2012

Hold on tight...

The updates might be a little fast and frequent for the next week.  I figured that I would spend some time reviewing the stack traces that have been sent in (I was up to about 15 issues).  Some of them were odd little things that only happened once, but still required some extra checks to make sure it didn't happen again.  I did however make a couple minor fixes to the stuff I released last week that caused some users to get an index out of bounds error.

I still have about 10 issues that need to be looked at, but as long as nothing critical comes in overnight, I'll probably hold off as long as I can before pushing the next set of bug fixes out.

Friday, June 29, 2012

Long time coming...

The last post to this blog was made on April 10th and the last update to the app was probably around that time as well.  That's almost three months... and you would think that after that amount of time I would have some crazy new enhancement ready to roll out.  Sadly, I don't.  After the last update, I started into looking at a weather extension and I think I have a plan for that, but then my 9-5 job got real crazy and home life got crazy.  I also got an email from a user who couldn't configure the docks, so I started into a redesign of the save / load mechanism for the custom docks.  The problem was that I lost motivation to work on this during my lunch break, so things started moving very slowly.

That started to change a couple weeks ago... with Verizon's move from the unlimited data plans.  My wife and I replaced our 2 1/2 year old OG Droids were replaced by shiny new Samsung Nexus' (Nexi?).  That kind of got me moving again as developing on the new phone is a dream compared to the OG Droid.  Then as it seems almost always happens I got a couple emails about the dock configuration issue.  What was nice was that one of the user's said that the problem started after his Razr was updated to Ice Cream Sandwich.  Quick emails to the other users and it seems that they were all on version 3.2 or higher.    I was able to confirm the issue on my new phone as well.  Fortunately, I was about 75% done with a rewrite of the dock extension and I was able to finish it up and send out a Beta to the users who has emailed me.

I made some other minor adjustments and that brings me up to where we are now.  Version 1.0.0.28 was just pushed out the market a little while ago with a better way for me to handle saving the dock configuration (that also works for ICS) and a small tweak to how I try to get the music apps, based off this article from Android ER.

I do feel a little motivated to work on Desk Clock Plus more after diving back into get this last bug fixed, so hopefully I'll be able continue to be motivated and get going on the other extensions that I've been thinking about since I started on the Desk Clock Plus project about a year and half ago.

Thank you all for your support and patience between updates.

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.