During my computer science studies I wanted to create something real beyond the excercises so I startet this as a Java desktop application. Since my lack of knowledge at this time the code was not very maintainable. Some years ago I wanted to try out Android development so I made a complete rewrite.
I don't believe in astrology, but I think the moon has some influence on lifeforms on earth since it can also move the seas. So at least when cutting the trees in my garden I try to find the right moment to do this.
Calculations
In the beginning I borrowed the book "Astronomical Algorithms" (Jan Meeus, 1998) at a library, but for a beginner student having not much knowledge about astronomy it's hard to implement these, so I was glad to find libnova, a C library written by Liam Girdwood, implementing the algorithms of this book.
Using this library, I could virtually let the earth orbit around the sun, and the moon around the earth to get rise and set times, moon phases and the position of the moon relative to the zodiac signs. To be able to do so, and to have full operating system independence, I ported the needed functions to java.
First lesson learned: The more you change the code structure during portation, the harder it is to port upstream updates ...
So when starting my rewrite I looked for other ways and found a cleaner port "Nova for java" by Richard van Nieuwenhoven, who kept the methods static and nearer to the original code. The disadvantage of this portation is, that through the static C-style methods it can't be used for parallel calculation. So I fixed this and published it as nova4jmt.
For interpreting this data I had the book "Vom richtigen Zeitpunkt". This book also is available in other languages, the English version is called "The Power of Timing".
I tried to implement the rules of this book and created a plain-java wrapper library libZodiac. Because there are some limitations in the android world, but I didn't want to limit the whole library to Android I made an Android-fork called libZodiac4A.
With these libraries the whole functionality of the wanted lunar calendar is covered.
The app
Building the app the "only" work to do was to build a frontend for the library, making use of some features a modern phone framework provides. This is e.g. searching for coordinates when you enter your location to calulate the data for, or sending events to your preferred calendar app to create reminders.
Because of the goal to plan activities, I didn't choose a classical calendar design, but one where the user selects what he wants to do and then sees the next days and how much it is recommended to do that.
The app is available at Google Play store.
