During the summer I released an android alarm clock/dawn simulator, my most polished app yet.
I had the idea of a dawn simulator at the beginning of the year and started development in April, for a release in July.
Frankly I had the idea “by myself” because I am not a morning person and for me a waking up from deep slumber can be “torture”. I am also quite sensitive to light when I sleep, so I already had some experience, comparing shutters closed or opened…
I did a quick search on Google Play and did not find any dawn simulator. I do not know how I did this search (at the time I didn’t know the term “dawn simulator”) because when I search again now I easily find several, dating back from 2013. There was also one released while I was developing mine…
I guess there is some kind of rule “if this is a good idea, people are already on it”. Anyway it does not matter that much, because the idea is step one in a myriad of steps, what matters most is execution.
One another issue to consider is the seasonality of this kind of app. I released in July, the month with both long days (in the northern hemisphere) and vacations, so the time when a “dawn simulator” is the less useful. The upside is, it allowed me to refine the product quietly (now it is in version 1.5) with incremental enhancements and minor bug corrections.
So, what can my app provide to set it apart from the many alarm apps that already crowd Google Play? What are the main issues to consider?
Reliability. Yes, some existing alarm clocks don’t ring. This supposed on my part studying calmly how an alarm clock should work in android, in order to have a good architecture and rely on the fewest “hacks” as possible. Then good testing.
Innovative features. What is missing from current alarm apps? As we have seen “dawn simulation” is less “innovative” on android than I would have thought, but I also integrated other features such a a very quick way to set up a “nap” alarm (to “ring in 30 minutes” for instance), reminders with system notifications…
Good user interface. A lot of existing apps (not only alarms, and especially “indie” apps) on android are still “made by engineers” and it shows. I tried to have a “beautiful” and streamlined UI. In my opinion I succeeded to surpass a lot of “competitors” but a few “pro” apps like Timely are still ahead, I did the best I could in a reasonable time frame. It is really interesting anyway to try to shape the user experience in a simple and elegant way…
Do one thing and do it right. Some alarm apps also have stop watches, give the weather…Fine, but I started with the idea that the smartphone/tablet is the Swiss army knife, the apps don’t need to be ones too. A simpler app is simpler for the users, has less bugs, and the developer can spend more time polishing and testing instead of adding half-baked features with an ugly UI…Last point very important when you are a one-man team!
Marketing. I have zero budget for marketing and unfortunately in today’s android app market, this almost ensures that all other efforts will be in vain. What I can do is make a good app, refine the Google Play product page, contact blogs/online magazines for review (but they are inundated with requests, so the odds to be reviewed are long) and other small efforts such as this blog post (shameless!). And hope that at some point there is some sort of positive feedback loop going on.
Development took more effort than I anticipated and since I have a day job, during a few months most of my week-ends and a lot of my evenings were spent on the app.
One decision proved costly, that was to decide to modify the “base” android UI look. To simplify, the “Holo Dark” base android UI is black and blue, and I wanted black and white. This forced to stay away from several “helper” classes (most notably regarding settings) and to dig deeper into the API, at partially undocumented depths (Fortunately there is Stack Overflow…)
There is one technical decision I regret, that is to use the “Shared Preferences” to store the alarms data. It was fine at first but then I added, reminders, light duration, screen orientation…In the end, it would be better to have all this data is an SQL database, maintenance would be easier and the code would be cleaner.
I encountered one area (“wake locks”) where either the android code is buggy, what is specified is not what is implemented, or the documentation contradicts itself. It is usually easy to work with the android APIs because it is well documented (especially when you add Stack Overflow) and behaves “as expected”, but sometimes one stumbles upon problematic stuff…
The app has several points of interaction with the system (alarms are registered in the system, and the system launches “some code” at the set time, to put it very simply) and that means some research on how exactly it works, and more complicated unit and validation testing.
In the end, the code is approximately 12,000 lines long (8,500 lines of Java and 3,500 lines of XML). I did not have an estimate before starting development, but I would never have guessed that a “simple” alarm app, reasonably well coded and designed, would have a code base this big.
Tested on my Nexus S and Nexus 7, it works fine…There is still a risk on some phones when the manufacturer and/or carrier adds what I charitably call crapware. Since there are several interactions with the system, it depends quite heavily on said system. There is some defensive programming used, but it is difficult to guarantee nominal operation even if the surrounding system does not behave correctly.
That is why I opted for a “shareware” pay model. For the first 30 days the app is completely free, so the user in effect “tests” the app on its device. After 30 days, there is a one-time payment to use indefinitely. At this point I suppose that if the user still has the app it means that it works correctly on his system. If the user does not pay, the basic function (ringing at the set date and time) still works, but for example there is no screen lighting. A savvy/stingy user can always uninstall and re-install the app, since I do not use a licence server. I decided that I would not require an internet connection to use the app and that people using the app may become tired anyway to uninstall/reinstall/reprogram alarms every month. Plus frankly the app costs €2, is installed on a €400 device, I never understood why apparently some people are so reluctant to shell out 0.5% of the device price if they like and use the app. In the end it’s their choice…
Once developed and tested, work is not finished. I contacted a bunch of blogs/online magazines, a few reviewed it. As said above July may not be the best time for such app, and may not be the best time either to ask for reviews (or is it? Maybe there are less requests for review…) so I intend to have a second try now, the app is more polished, has some downloads and reviews, days are shorter and vacations are over…
One other task is to have a good product page on Google Play (since for now I am not “bothering” with other markets) …I just added a small video, it is basically a slideshow, but it still required on my part some learning, and a few hours of work…
Then there is some work to enhance the product on iterations and correct bugs. Thankfully I only had minor bugs for now, but it is still better to react quickly.
All in all, if you add up learning and research, development, testing, “marketing”…Such an endeavor, even though the app may seem simple, is very time-consuming for a “one-man team”. During four months I had time for my day job, this project, and really not much else. Still it is an interesting experience (even if not a lucrative one…), and the advantage of doing this alone is that you dabble into UI design, architecture, coding, basic marketing, and even video editing in the end! I am happy to have finished this it really requires energy and determination!
For future apps…I am currently working on a small app revisiting launcher folders on the home screen, but this is really a “stopgap” until Material Design is a little bit more established, then the next “big project” should be a “notes taking” app, I really believe that even if a lot of “notes” apps already exist on android, there is room for improvement in user experience, graphic design… (Hence the decision to “wait” for Android L and Material Design…) The only problem is, it will require at least two times the effort I put in the alarm app…On the other hand I am now “trained”… Anyway, that’s a talk for another day!
https://play.google.com/store/apps/details?id=com.aasfet.clocklight