maemo.org - Talk

maemo.org - Talk (https://talk.maemo.org/index.php)
-   Applications (https://talk.maemo.org/forumdisplay.php?f=41)
-   -   [M5] [Announce]: Habit Jewel - an app to motivate you to get your daily habits done (https://talk.maemo.org/showthread.php?t=97434)

Xagoln 2016-09-01 06:27

[Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
4 Attachment(s)
Hi all,

I've been developing a PyGTK app called Habit Jewel (the name is a homophone of 'habitual') for a few weeks now, and it's available in extras-devel.

Habit Jewel tracks your habits for each day, motivating you to reach your goals by recording how often you fulfill the habits you have set up for yourself. The idea is that with the knowledge that you are recording the results you will be motivated to make time to do the habits.

Basically you define some habits and for each one specify how many times per week you want to do it, i.e. a quota. Until you reach this quota for the current week, the habit will display in Habit Jewel every day. Once you reach it it will drop to the bottom of your habits list (with any other fulfilled or missed habits) until the next week.

Also, habits can be partially completed in increments of 25%.

To set a habit's completion status for a given day, tap and hold on the checkbox icon at the far right of the habit and then select 'Done', 75%, 50%, 25%, 'Missed' (meaning you didn't do it), or 'Clear' ...

The difference between 'Clear' and 'Missed' is that clear resets the habit back to an unknown status - you may have done the habit but not gone back and updated it in Habit Jewel.

On top of this, for habits with a target duration (e.g. 'Practise violin for 20 minutes') there is a built-in countdown timer that will use the selected habit's duration by default. You can also change the countdown time to do more or less. If the timer is started it will count down and then play a sound to notify you.

The daily habits view, which is the main screen, shows some mini bar graphs beside each habit, showing how many times you've completed the habit in the last 7 days. There are also some numbers alongside the habit description: the overall completion total for the habit for the current week / the quota you'd like to reach : the day number of the day currently displayed (Monday = 1, Tuesday = 2, etc).

Tap and holding on the habit description itself allows you to edit the habit, pause it (make it go away - e.g. if you are on holiday), delete the habit (but nothing is really every deleted - see the Master Habits List), etc.

I plan to build the Stats page that is on the main menu soon, which will show some numbers and graphs.

I also have a plan for each habit to be linked to a specific goal, so you can create the goals and then link the habits that support them. This will mostly be useful for stats purposes, and will be optional.

I've also pondered going in the direction of gamification later, whereby you might get some kind of meaningless but fun virtual 'gifts' or gold coins or other score in the application as you keep doing your habits.

It's somewhat beta at this stage, but should be fairly stable. I have made code changes so that the database schema should be automatically backed up and then upgraded to the version appropriate for the running code without any data loss.

IN CASE OF EMERGENCY ONLY!
Now that the schema upgrades automatically on startup if it's out of date, nobody should have to do this, but just in case.

If you have any issues starting the application after upgrading from a previous version, one thing you could do is to rename your database so that a new one is created.

Code:

mv ~/.habitjewel/database ~/.habitjewel/database.bak
CHANGELOG
## [0.7.5] - 2016-09-19
### Changed
- Ditched gstreamer for calling aplay via os.system() to try to fix battery drain issue

## [0.7.4] - 2016-09-18
### Changed
- Tweaks to timer to address potential battery drain issue

## [0.7.3] - 2016-09-15
### Changed
- Changed wording of Target time label on timer page to be less ambiguous

## [0.7.2] - 2016-09-15
### Changed
- Fixed crash when exiting timer that is running

## [0.7.1] - 2016-09-13
### Added
- Icon on timer start/stop button

### Changed
- Nicer formatting and colouring of habits in day habits list
- Other display tweaks
- Moved change log from main script to CHANGELOG.md (this file)

## [0.7.0] - 2016-09-12
### Added
- Countdown timer with audible alarm, accessible for time-based habits on current date only

## [0.6.1] - 2016-09-11
### Changed
- Refactored history gathering
- Tweaked mini bar graph display
- Disabled main menu Stats button (for now)

## [0.6.0] - 2016-09-11
### Added
- Mini bar-graphs next to each habit which display completion status for previous days

### Changed
- Created HabitJewelDB class and moved all database functions there
- Added schema version check and upgrade script for schema vers 0.4 and 0.5
- Bumped minor version number due to schema changes

Fatalist 2016-09-06 06:36

Re: [Announce]: Habit Jewel (and Habit Jewel [Breakage])
 
It looks exactly the app I need in my daily life :) Thanks for developing it!

Xagoln 2016-09-14 05:19

Re: [Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
I've now uploaded version 0.7.1 of Habit Jewel (see the first post for full details).

Notable changes:
  • Inbuilt countdown timer
  • mini graphs for each habit, showing completion history

The countdown timer is available by tap and holding on the checkbox, then selecting 'Open Timer'. The countdown time will default to the daily target for the habit, deducting some time if the habit has already been partially completed on that day. The timer will play a sound when the time is up.

The mini graphs simply show the completions for the last 7 days for each habit. Their colour will vary according to two things:
  1. whether they are in the current week (and so count towards this week's quota, and
  2. the percentage complete (the higher, the more green the bar will appear; the lower, the more yellow.

If you've been holding off installing due to my warnings about stability, now is a better time to install.

And if you have any suggestions for enhancements please let me know and I'll consider them.

I'm still planning to add a more indepth Statistics page and a few other things.

t-b 2016-09-14 21:14

Re: [Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
Nice app. Intuitive, responsive and will be very useful.
The timer didn't work for me. Opening the timer and starting it didn't result in any timer progress and after pressing the backspace it crashed.
I can reproduce it (the rest seems to work fine).

For managing projects it would also be nice to add a fixed duration and / or completion date for a habit.

Xagoln 2016-09-14 23:31

Re: [Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
Quote:

Originally Posted by t-b (Post 1515040)
Nice app. Intuitive, responsive and will be very useful.

The timer didn't work for me. Opening the timer and starting it didn't result in any timer progress and after pressing the backspace it crashed.
I can reproduce it (the rest seems to work fine).

For managing projects it would also be nice to add a fixed duration and / or completion date for a habit.

Thank you very much for your feedback.

I found and fixed the issue with closing the timer window while a timer was running. The updated package (0.7.2) is in the repos now.

I actually think the timer was running when you encountered the issue. It's just that during development I decided not to show too much in the way of animations while the timer is running, in order to conserve battery. The timeout which checks the remaining time/expiry runs only every 10 seconds. To give per-second countdown I'd have to reduce this to 1 second, I think. I didn't want to be waking up the CPU every second since I decided this type of measurement didn't need to be high accuracy/resolution.

The only visual feedback (apart from the button icon changing between pause and play) is that the horizontal slider moves as the time counts down, but you'll have to wait 1 minute after starting the timer to see that.

My reasoning was that we're supposed to be focusing on the task at hand, not watching the screen. :) When I get around to adding an Options dialog I may add the option for more immediate visual feedback from the timer though.

Re the fixed duration/completion date, I actually did design the database with that in mind, and in fact every habit has a start date and end date in the habits table. It's just a case of adding the UI options to manage these. All the database queries use the start date and end date correctly already, so it shouldn't be too much work.

And I still have further additions in mind for the next burst of coding.

dameceno 2016-09-15 13:54

Re: [Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
What an app!!! Any hopes for a Sailfish port?

t-b 2016-09-15 14:22

Re: [Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
Quote:

Originally Posted by Xagoln (Post 1515045)
The only visual feedback (apart from the button icon changing between pause and play) is that the horizontal slider moves as the time counts down, but you'll have to wait 1 minute after starting the timer to see that.

And I still have further additions in mind for the next burst of coding.

Tried the update and it is indeed working fine. Thanks!
The only thing that I think is still confusing is that the Target: is not changing - it keeps mentioning "xx minutes (not started)"

Great to see you are planning to expand the program. I love these kind of time management tools and the more options the better ;)
Another thing I like about the app is that the design is very finger friendly.

Xagoln 2016-09-15 18:22

Re: [Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
Quote:

Originally Posted by t-b (Post 1515091)
Tried the update and it is indeed working fine. Thanks!
The only thing that I think is still confusing is that the Target: is not changing - it keeps mentioning "xx minutes (not started)"

Great to see you are planning to expand the program. I love these kind of time management tools and the more options the better ;)
Another thing I like about the app is that the design is very finger friendly.

Yes, I was looking at it last night and realised that the (not started) really makes it seem like the timer's not doing anything. That refers to whether the habit is already partially completed for the current day, but I couldn't think of any alternative wording I was happy with so I've changed it to show nothing for habits that are 0% completed.

I uploaded 0.7.3-1 last night with that change, but I wasn't paying attention and uploaded it twice by accident. That build of the package seems to be unusable from the repos (doing apt-get update; apt-get install habitjewel gives an error about a file size mismatch for me). I've just uploaded a new build (0.7.3-2) to fix this, but it will take the repos probably 3-4 hours to make it available.

Xagoln 2016-09-16 00:08

Re: [Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
Quote:

Originally Posted by dameceno (Post 1515087)
What an app!!! Any hopes for a Sailfish port?

I was planning to do an Ubuntu Touch port first actually. I will consider Sailfish (Qt-based, I presume). I can't make any promises as I have a lot of other stuff to do.

In fact that's a big part of the reason Habit Jewel came about - I tend to focus with laser-like intensity on my current project to the detriment of all the other things I want to do on a regular basis (besides washing and eating though, well for the most part... :) )

Xagoln 2016-09-19 23:44

Re: [Announce]: Habit Jewel - an app to motivate you to get your daily habits done
 
I noticed that when I left Habit Jewel running full time, my phone would go from almost full to almost empty battery overnight.

This would only manifest after having used the countdown timer, allowing the time to expire so the sound was played, and not having closed Habit Jewel after.

I believe I've tracked this down to the use of gstreamer & pygst to play the countdown timer sound. I have now changed to using /usr/bin/aplay, called via os.system(). No more battery drain for me.


All times are GMT. The time now is 21:31.

vBulletin® Version 3.8.8