In this post I'll try to keep current state of development of the aforementioned1 application.
Here's what I've got so far:
1. All screens layouts:
a. main - done
b. add - done
c. practice - done
d. preferences - done
e. schedule - done
2. add/edit form
1. resize/crop image - done
2. save big and thumb in private storage - done
2.5 add/edit db action - done
3. handle edit params - done
4. insert/update persistence - done/done
5. little icon/ big icon issue - done
6. edit currentCount bug - done
3. main form
1. smart id/url image display - done
2. practice long-press context menu with
a. open, - done
b. edit, - done
c. delete - done
3. show statistic sub-text - done
4. practice form
1. start practice - done/temp
2. schedule - done
3. edit - done
4. update scheduled date sql - done
5. big picture's not loading - done
6. properly format dates - done
5. schedule form
update date picker - done
6. icon - done
7. session form
1. layout - done
2. timer/clock action ? test in real dev - done
3. handle mala count - done
4. handle date change - done
BUGS:
major:
current count reset after schedule edit - done
crash on save new - done
last practice date is one month ahead - done
crash after taking picture on NEXUS
custom picture's thumb not showing in main list - done
scheduled date is one day behind - done
handle screen rotation for session - done
minor:
no-scroll list unjust height calculation
prevent screen from lock during session - done
FEATURES
custom mala size
remove temp image from sd after shot
1 using this word is absolutely irresistible. I just envy the bureaucrats.
Chapter X. In which our her0 enters waters of åNdroid (but not only) development while fulfilling his destiny which will never be known to anyone including those who's supposed to know it but for reason of their non-existence you're not reading this aren't you question mark.
Wednesday, August 11, 2010
Meditation tracker technical post
And here we go
Somewhat unexpectedly for me the first application I've published on android market is my the most recent side project. So, three weeks of relaxed development, some testing and here we go.
Meditation Tracker for Android phones
Meditation Tracker helps you keep track of progress of your practices.
It comes with predefined preliminary practices group (can be switched off in settings). You can create your own practices and create practice schedule based on date you aim to compete practice or number of daily repetitions. It also contains a session timer - simply set timer to required length and you'll be notified when that time has passed. You can be notified by sound or vibration. Each session data (time, repetitions) is stored in database.1
It comes with predefined preliminary practices group (can be switched off in settings). You can create your own practices and create practice schedule based on date you aim to compete practice or number of daily repetitions. It also contains a session timer - simply set timer to required length and you'll be notified when that time has passed. You can be notified by sound or vibration. Each session data (time, repetitions) is stored in database.1
My primary aim was to create visual and functional copy of the same application created for iPhones.
So the Meditation Tracker.

Not much to say at this moment. As I said already this is test-release. In order to help testing - ... well use it and when it crashes, please post somewhere here a bug report including how to reproduce the issue and also the log file is found on the very root of your SD-card of the device (called meditracker.crash.log) - please attach it.
So far there's one known issue: on Nexus One there's an error after taking a photo so I'm really looking forward for error report on that.
Also have a look here. This should be the centralized place for both applications, at least I've talked to them and they find it a good idea.
So far there's one known issue: on Nexus One there's an error after taking a photo so I'm really looking forward for error report on that.
Also have a look here. This should be the centralized place for both applications, at least I've talked to them and they find it a good idea.
1 This description is shamelessly copied from the iPhone's application. But intentions are good. I think it's not a bad excuse.
Friday, June 11, 2010
just use this one if you need per-thread smart(produces ints if can) parsing of json numbers:
trait SmartJsonNumberParsing {
val doubleRe = """.*\..*""".r
scala.util.parsing.json.JSON.perThreadNumberParser = { n : String => n match { case doubleRe() => BigDecimal(n) case int => BigInt(n) }}
}
Thursday, June 10, 2010
functional programming
Meanwhile "folding" is awesome. If you're from the non-functional-programming background, like me - learn one. Really blows mind as OO used to in the good ol' days.
blogging is about complaining isnt'it?
And here I come, ma.
Scala is a beautiful language which compiles to JVM's or CLR's byte code. Cool? Cool. But it also means that it inherits all the ... little things from those VMs. And Java's biggest thingy I know so far is type erasure.
Compatibility with old code? Great. Support code for win3.1 apps in XP? Perfect idea for marketing dept.
Before getting out of home, check your winkdoodle, because 400 years ago someone didn't and got bitten by the dog. It was huge.
Well, they run XP code in VM on Vista-shmista these days, okay, an option. What do we have in java these days?
Scala is a beautiful language which compiles to JVM's or CLR's byte code. Cool? Cool. But it also means that it inherits all the ... little things from those VMs. And Java's biggest thingy I know so far is type erasure.
Compatibility with old code? Great. Support code for win3.1 apps in XP? Perfect idea for marketing dept.
Before getting out of home, check your winkdoodle, because 400 years ago someone didn't and got bitten by the dog. It was huge.
Well, they run XP code in VM on Vista-shmista these days, okay, an option. What do we have in java these days?
scala> List[Pair[String, Any]]("a" -> 2) match { case (h :: t) if h.isInstanceOf[Pair[Int, Any]] => "match!" case emp => "nada" } :6: warning: non variable type-argument Int in type (Int, Any) is unchecked since it is eliminated by erasure
List[Pair[String, Any]]("a" -> 2) match { case (h :: t) if h.isInstanceOf[Pair[Int, Any]] => "match!" case emp => "nada" }
^
res1: java.lang.String = match!And those people disallow me picking in nose and call that language type safe? Yeah! Way to go for the backward compatibility!
Saturday, June 5, 2010
even though results seem to look same, refactoring is joy of getting things right, migration is pure pain in the ass of just making it work.
Monday, May 10, 2010
future now
they often say like "future now!" future is by definition the thing that never comes, an unreachable horizon. don't forget* this when they sell you future products.
* there's one exception though. the electric kettle was actually invented in year 3026 and landed in our time because of a simple mistake.
Subscribe to:
Posts (Atom)



