So many things
So I got out of the habit of blogging… every few days I have an idea of something to write about, but I never end up writing about it. So here is a quick post to try and get back in the habit.
I develop games and applications in my spare time, when I release a free application I am doing so with the motivation for making a profit from ads or upselling the user to the full version. At the same time I am providing a product for free, a product that users do not have to pay for. I appreciate all of my users (coming up on 5 million of them now…), I am very happy that they enjoy my work, and I do my best to try and update the product when problems arise.
Recently I have updated a few applications. I have been working on an Android project at my full time job for the last 2 months and I have had some ideas strike me on how to improve my existing applications. One thing that I learned was how to take advantage of using a feature added to the Android SDK over a year ago, Android Library Projects
Android Library Projects allow developers to put code that can be shared by multiple applications into a library that the Android SDK knows how to work with. This solves one of the fundamental problems I had with Android. When I first released many of my apps the Android Market did not support selling applications, so I released free apps with the intent of releasing paid version of these apps at a later time. The code that I used to write the app was the same, I would just change a constant or 2 around and recompile to test the various version s of the app. When paid apps could be uploaded to the Android Market I quickly learned that there was a problem with this plan. The Android Market uses the Java package name to differentiate between apps, so my idea of having 1 code base that I could conditionally compile into 2 different builds died quickly. I panicked and in the rush to get paid applications uploaded I did one of the worst things imaginable to a developer, I made a copy of my code and checked it into my subversion repository under a different directory name with a different package name. Other than the package name the code was identical. Non developers might ask “What is the problem with that?” and the answer is from that point on whenever I made an update I had to do it in 2 places instead of one. Every small tiny change I made I had to remember to repeat it in another place, this is a huge problem and would lead to the projects getting out of sync.
So I used my newfound love for Android Library projects and applied it to my own applications and solved a problem that I have had for nearly 2 years. Now BreakTheBlocks and WordWrench both use Android Library projects to unify the codebase. I no longer have to worry about making a change in 2 places (Lite and Full), or forgetting about some small detail because from now on all I have to do is make my change in 1 place and from there the application compiles the way I want it to. This was not a simple project but in the end it is very nice to know that I have one of my biggest annoyances solved.
Besides unifying the code base I also have learned a fair amount more about memory and thread management and I would like to apply my new knowledge to BreakTheBlocks to make it a better application.
So after my library project work, and starting on some memory and thread optimizations I released an update of BreaTheBlocks.
That was 2 nights ago. Tonight I decided to check the comments to see if there were any strong feelings one way or the other on my updates. There were the usual grab bag of comments including my favorite theme of comments; the 1 stars ratings because people are having download problems (which I have no control over). However I saw a new trend that haven’t seen before



1 Star ratings for not posting a change log…
When I started posting applications to the Android Market in 2008 many features that the Android Market now has were not available. So a few months ago the Android Market started allowing developers add changelogs, which I agree is a good thing. The thing is I have not updated an app since changelogs were available and the fact that I could now post a changelog along with an application update slipped my mind. So since I didn’t post a changelog I received multiple 1 star ratings and was called lazy. I released an update to a FREE application, this update took a considerable amount of time to make including multiple nights of lost sleep, there is nothing groundbreaking in the update but this update is very important because it lays the groundwork for many future optimizations which I plan on doing in the very near future. The fact that users feel that because a developer does not post a changelog that app deserves 1 star is completely beyond my comprehension. To me that is the equivalent of someone attending a free concert by a band that they like and even though they liked the music at the end of the concert they boo the band because they forgot to acknowledge their hometown and say “No One Rocks Like…<check back of guitar> Springfield!” and tell the crowd that it was “The best crowd ever!”.
When a user submits feedback I do listen. I often spend days thinking about the smallest bit of code and how I can optimize it for a better user experience. I may not always be able to make updates as often as users would like but I do this in my “spare time” which is very hard to find.
I have gone back and added changelogs to my updates I hope this keeps the users happy, I now know not to forget them…
Be on the lookout for more updates in the coming weeks, I have a feeling that the gameplay on BreakTheBlocks is about to improve greatly.