Clock Light Alarm and Nap

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

Advertisements

SquareMath

I will write a little bit about my second android app, which is also my second game.

promo_big

My first game was a 2D OpenGL “action” game.

For my second game I wanted first to stay in 2D, much less work programming or preparing game assets (graphics and so on). There are tons of game mechanics left to explore and invent in 2D, and frankly I find that especially on mobile, 3D is often (not always) a gimmick here for cosmetic reasons…In a way it is easier to round up some good programmers, some competent people for graphics and sound, have a big marketing budget…Than really make an effort on game design and try to innovate on game mechanics.

I also wanted to make something in the “puzzle” category, because in a way it emphasizes what I exposed above, development cost is reasonable (if you do not go for a big marketing and user retention strategy…) and what is most important is game design. Almost all successful games in this genre have elegant, beautiful game mechanics. How to have entertaining play emerge from simple rules is the challenge, and it is a very interesting problem of course.

Once I knew it was going to be a 2D “puzzle” game, I decided to use the standard android UI elements (buttons…) as much as possible, in order to learn, since my first app was OpenGL-only.

To find the idea for the game mechanics I had some recollection of a game I once had on my calculator, similar to “Lights Out” but on a much larger grid and very entertaining in my opinion. I also had an idea involving some sort of tetrominoes,  but prototyping on paper and “in the head” refined and changed this idea to something that can be seen as Lights Out “evolved”.

You have an 8×8 grid. On each cell is a number. The goal is to have each cell set to “zero”. Touching a cell changes its value, and the value of its four neighbors. You can change the value by adding or substracting 1, and in more advanced levels adding or substracting other values such as -2 or 3 (depends on the level.) But you always have the “-1” and “+1” options so there is for sure no possibility to “get stuck” with an unwinnable position.

 Screenshot_2014-10-04-22-48-48

Of course it is best to win with the least moves possible, and each level has a “par” to beat. Once you have “solved” enough levels of a given difficulty, you have access to levels of a slightly higher difficulty.

The levels were designed automatically by having the computer play the game “in reverse”, starting from a “zero” grid and touching cells, the more moves the more difficult the level is supposed to be. Then  human testing mostly to assess the difficulty curve.

Screenshot_2014-10-04-22-49-22

There is also a “level generator” on the same principle, it “plays the game in reverse”.

And that’s it! A simple game but more polished than my first one! Zero work on graphics, sound, music, but still quite a few hours of programming and learning, and the satisfaction to design game mechanics!

https://play.google.com/store/apps/details?id=com.aasfet.squaremath

 

To finish a few books on game design for those interested:

A theory of fun for game design (Ralph Koster) — If you only get one book get this one. Even if you’re no into game design you can still read it. Very insightful and a page turner.

The art of game design (Jesse Schell) — More classical in its presentation, but covers a very wide range of issues and often very down-to-earth, so good.

Rules of play (Katie Salen) — The book is big and tedious at times (first book I read from MIT so I don’t know if it’s a requirement there 😉 ) Very philosophical and big parts are difficult to apply directly to “the problem at hand” but really builds up a base that can inspire and help reassess what’s taken for granted…Often a good way to innovate.

Panama

pa
A few years ago I went on a trip to Panama, 3 wonderful weeks!
I arrived in Panama City from Europe, had a short night sleep, then immediately went to Bocas Del Toro with Aeroperlas, then one of the two Panamanian regional airlines.
Sure enough, it was incredible going from winter europe to a carribean island in a little more than a day. Moreover, it was at a time of a big cold wave in Europe, but frankly for me it was OK in Bocas with 30°C in the air and 28°C in the water!
Bocas has a long history with Colombus, then later the banana trade, but today it is tourism that gets things going. It seems to be a fairly popular destination with US citizens, and had a very good atmosphere. However, it is developing very fast, and nature is giving way to concrete (new hotels), dirt roads are giving way to macadam and the almost incongruous taxis in a town that is (still) small enough to go on foot… Marine flora and fauna is suffering too… I will stop there since as a tourist I was a willing participant.
I am just saying that “progress” makes things change rapidly so if I went there today I may not even recognize the place. Anyway, there you can (among other activities) go on boat trips, snorkel, and doze off on the beach, and that’s exactly what I did!
Next stop was Guadalupe, little town skirting the Parque Internacional La Amistad (encompassing parts of Panama and Costa Rica) …
To go there, fly back from Bocas to Panama City, then another flight to David, then a taxi gets you to the lodge in the mountain… I had to take an aircraft instead of the planned bus  because there were protests and the road between Panama City and Colon (the main road in the country) was blocked by the protesters. The protests were (as I understood it) for better compensation for indigenous people living near a planned copper mine, and better environmental protection in this mining project.
 It seems that the people have won and the project is now cancelled http://www.mineweb.com/mineweb/content/en/mineweb-political-economy?oid=148100&sn=Detail
But more on these protests a little bit later.
Back to Guadalupe, people are mainly making a living with agriculture (vegetables, horses a bit lower on the valley) unfortunately by doing so they are “eating away” at the tropical forest (even the “Parque” parts), and one can be almost certain that it will be followed by soil erosion and desertification (this phenomenon can be observed in lower areas of the country…) Then, I don’t know how one comes back from that situation…Moreover, in the town one in two (literally) shops is for “Quimicos”…
Anyway, there is still very nice cloudforest around, and a few walking trails, to make a visitor happy! An especially nice area is Las Nubes. Elevation between 2500m and 3000m, clouds and lush forests…
From Guadalupe to Boquete, and that’s the funny part. There is a walking trail between the two places, across the Volcan Baru range, but at the time of my visit it was closed because some sections had been “washed off” during the rain season. So, my solution was to go back to David, then take the bus to Boquete.
But, the “copper mine protesters” had apparently taken over the town of Volcan, which is the single way out of Guadalupe and a few kilometers down the valley. They put a blockade in place, set fire to the fire department (which I find ironical…) and apparently stolen weapons from the police building. There is no military in Panama but the policemen usually look quite serious with weapons like assault rifles. So this is the moment when you start to rationalize, up to this point tourists were not targeted by violence but it sometimes goes this way, you are with US citizens, in central America and this could be viewed as a good thing security-wise, if things really go south the tropical forest is very close to the lodge…
Anyway, this was the peak of the violence, unfortunately there were a few dead amongst the protesters, and then fortunately things cooled down…
So, unable to use the road, I went to Boquete with a hired guide on the “closed” walking trail, and it was a really really nice day trek!
Boquete, on the other side of Volcan Baru, is a little bit lower in altitude than Guadalupe, and is bigger too. Wikipedia tells us that there are 4.234 inhabitants.
It is a popular place with US retirees apparently, and above all the area produces world-renowned coffee (and I agree that is is very very good.) I was there  for 3 days and saw at least one rainbow each day, so it is a bit magical in this respect…
Back to Panama City, just in time to take a cruise on the Panama Canal, in the Pacific ocean in the morning and in the Atlantic ocean in the evening, passing the Miraflores and Pedro Miguel locks, the Culebra Cut, Lago Gatun, then the Gatun Locks (nearly 1 mile long!)
It is of course an engineering marvel and a great human adventure, to me it is in the same league as the Apollo project for instance.
In the middle of one of the most diverse natural areas of the world, you get the pulse of the human “global village” with this trading route opened 24/7…
Two excellent book about the building of the canal: Hell’s Gorge by Matthew Parker, and The Path Between the Seas by David McCullough.
Next day is Contadora, small island on the Pacific side, going there on a Cessna…
Then after that, the small islands of Guna Yala, in the semi autonomous territory of the indigenous Guna people. Setting aside the few beaches where garbage (mostly plastic) form Colon and the inhabited islands accumulate, it is really a “postcard from paradise”. There are few places like that in the world, this is one of them. Three days on small deserted islands, with clear blue waters, fish, coral, white sand, coconut trees, gorgeous sunsets, starry nights…An incredible experience, but see for yourself:
Then the last day in Panama City, interesting contrast between the skyscrapers, and the “old” neighborhoods with a spanish style…And after three weeks it’s time to go back to Europe, to sum up I can only recommend Panama and I am ready to go back because there is much left to see and do there!

Clown

So I just had one week of clown training, fun!

It was a “beginner’s” class, or Clown 101 if you like, with the Bataclown people. In a very nice place.

So what do we do in clown class for beginners? Lots of exercises.

Warm-up exercises, for the body and for the imagination. As is usual in “theatre” training we did a lot of walking “in the space”.

  • Some exercises in pairs where one shuts his/her eyes, the other guides, or describes the space, real or imaginary. The pair can go on a wonderful jungle or space adventure in a simple room, if there is imagination and trust.  You learn to connect and listen to your partners, accept and react.  
  • One particular exercise for the imagination was walking in the space (of course) and picking up an object (put there by the teachers), then developing a “love relationship” with the object (but staying platonic…) …Then later telling your “love story” to the group.  With this exercise you realize that imagination and belief are greatly helped by a “laser-sharp” observation of your object.  I think one or two chapters in Stella Adler’s book (so “general” acting, not clown) are devoted to the importance of observation.  This clown exercise is of the same sort in fact.
  • Also another exercise with objects is to do a small improvisation with a cloth sheet. You should not think about what you are going to do until you touch the object. This trains you to “not use your head” (always important in improvisation)and use your senses. Same with some exercises eyes closed: you realize that you can use hearing, touch, smell, all of which are less “brainy” than vision.

The teachers also encouraged us to use our voice during these exercises. For some people (I’m one of them) there is a small barrier, it’s difficult to “make sounds”, you feel exposed. I guess that is partly because voice can be very personal and linked to our emotions. All the more reason to use it!

We also did some imitation games, in groups of 2, 3 or 4. Always very funny! Once again there is no thinking allowed, you just must connect with your partner…Usually it starts very calmly then five minutes later you have a group of crazy people  mooing or rolling on the floor!

Improvisation, solos and duos.

First you go put your nose and dress as a clown. I must say that clothes of the past decades are a godsend for clowns. (I won’t be more specific on the time frame so nobody gets offended.)

Then you go on the scene and “deal” with what’s there, usually you do not know in advance (again, no thinking allowed!)  Sometimes it can be very fun to do and funny to watch, sometimes not so much…That’s the learning process! The improvisations usually make you work and expand on what was done in the warm-up exercises in some way, and it’s more challenging.

 

What should we learn with such exercises and improvisations?

  • No thinking!
  • Use what’s there, all your senses and not only vision, your mood. “Accidents” are gifts and small things can have a great effect on clowns.
  • Connect with your partners.
  • Dare to accept the “void”, the truth of the moment. You cannot “hide”. We veer on the psychological here, but in some improvisations I really “reconnected” with the child I once was…
  • You do not play or build a character as you could do in theatre. As written above you “use what’s there”.
  • That said you will discover progressively some “preferred behaviours”, states of mind, when you are clown, and maybe that is “finding your clown”.
  • Of course there is no “4th wall” and you know the public’s there.
  • Showing your emotions to the public is usually more interesting than “doing”. Clowns “share”.
  • The stakes are very high for the clown! The clown wants to succeed in whatever he/she has decided to do. As with most comedy, if you try to be funny you won’t be.

 

And this is what we studied in “beginner’s” clown. The next steps would be levels of play/reality, rhythms, more advanced improvisation to connect with your partners and the public…

In conclusion, a very interesting experience! I do not know yet if I will continue on this path because it’s a long road and in life you have to make choices, but it sure has already been useful for my acting and even given me insights into myself…

To finish, a great book about comedy with some chapters about clown: “Why is that so funny” by john Wright.

My first app

Screenshot_2014-08-16-12-46-55 I wanted to make (video)games since a long time ago. Like a lot of people I didn’t follow through. At one point I dreamed of becoming a (professional) game designer, but facts of life, and that ever-attractive comfort zone, made me “end up” as an IT engineer working for The Man. Not a bad situation really but nothing exciting either.

I started several projects, on PC, on Palm Pilot, but it never went far. Usually it stopped when I realized that doing something worthwhile is’t always fun and is a lot of work.

Comes Android. About 2 years ago I realized that it was a really good ecosystem for me. I know Java. There is a lot of support and documentation (the official Android developers site, StackOverflow.) Libraries have matured and keeps one from getting swamped by a sea of low-level work. Equally important, the skills are very useful in the “general” workplace.

So I finally started to work seriously, on a game since it was my first interest in Computer Science. It took me a few months working on the week-ends, learning the ropes and developing a full app.

Buugs!

And there it was! My first app! It’s a very simple game, “ladybugs” wander about on the screen, if you see two identical you have to touch both in quick succession, to “kill” them, gain points and additional time. there are some combos, a clock and that’s about it.

It uses OpenGL for 2D graphics, the skeleton for the OpenGL setting-up uses code from Chris Pruett. Although I think the game mechanics are well-balanced I do not have a wide UX returns (if you want to test it and get back to me, you are welcome! Also if you have opinions about the game design, if you know similar games…)

The end-product “works” but is a bit rough around the edges. The greatest flaw in my opinion is that there is no way to “pause” the game and you can easily exit the game and “lose” your game session. Problem is, it uses a lot of “time counters” and the main game loop is a big plate of spaghetti (not the edible kind.) So not easy to maintain…The irony is, in my day job as a quality engineer I must tell people to set up and follow processes, document…I guess I wanted to be more free if I was doing this for myself and for fun.

Anyway, I designed, developed and “shipped” my first game, and a few people wasted time with it! It was a good feeling, I became a doer! Plus, since I tend to procrastinate (a lot), it was good to “force” myself a little bit, get used to work…It gets easier with training 😉

Screenshot_2014-08-16-12-44-13   Screenshot_2014-08-16-12-45-35

 

 

“You gotta have a blog”

Hello!

So I finally made a blog. I didn’t see the point until now, and I can’t say that I fully grasp the concept yet, I guess it’s by doing that comes understanding…

What should I write? Who’s gonna read it, besides web crawlers? Why should people be interested in what i have to share? All good questions, no answer until you try….

So why now? Well it’s simple, I am developing Android apps, done some already and more in the planning, maybe I’ll have a try at other things too…And “people” say that for promotional reasons you really should have a blog. So it’s a bit crass but there it is.

I hope that I will be able to make it interesting by going beyond just that and sharing my other interests (tech, photography, travel, acting, and so forth) …For me at least it should be an interesting exercise, just write…

It’s by walking the path that you can know what lies ahead” (probably said by somebody some time ago.)

IMGP8966