howdy is a simple command line tool for your mood monitoring. Basically, it is capable of two things:
- asking you "how are you today?", and expecting you to "rate" current day;
- providing you with reports about your mood dynamics.
While this is a very simple (and somewhat stupid) idea, after a year of rating your days, you can get a decent amount of data. This will let you to answer some important and not-so-important questions, like:
- what is your favorite weekday/month/season?
- what is your favorite weather?
- how sports activities/gaming/cooking/anything affect your well-being?
- is there anything in your life constantly dropping your "mood balance" below zero?
All this may be obvious, but sometimes I want to verify if my assumptions about myself are correct. This is where this tool may be handy.
So it is something like maintaining a "mood calendar", or "mood ledger", with some tools to analyze the data about yourself.
All records currently maintained in a readable text file (./howdy.journal
by default).
To add a new record, run:
howdy add 1 -c nice day
this will add a record into journal file that you rated your day with 1, and will leave a comment "nice day" to your rate. Technically you can use any number between -128..127, but the ideal way to use it is to use just -1,0,1 - try to keep it as simple as possible.
To get a mood report for last month, use:
howdy mood
More strictly, command syntax looks like this:
howdy [-f FILEPATH] add SCORE [TAG ...] [-c COMMENT]
howdy [-f FILEPATH] mood [TAG ...] [-t REPORT_TYPE]
howdy [-f FILEPATH] export [EXPORT_FILEPATH]
Here:
FILEPATH
is a path to journal file, defaults to./howdy.journal
;SCORE
is signed int from -128 to 127;TAG
is a string that can be assigned to a day rate, which can be used to filter scores making input in the report;COMMENT
is a string that will be added to a journal to a day rate. Currently, there is no particular use of it other than making a note for yourself;REPORT_TYPE
is one of the possible report types:w
orweekly
: sum up daily scores in Mon-Sun intervals and display those;7d
or7 days
: sum up daily scores in 7 days intervals (including today) and display those;m
ormonthly
: sum up daily scores for monthly intervals and display those;30d
or30 days
: sum up daily scores in 30 days intervals (including today) and display those;lm
orlast month
: sum up daily scores for last 30 days and display it; (if no report type is specified, themonthly
option is considered);y
oryearly
: sum up daily score for last 365 days and display it;mm
ormoving
: display 30 monthly reports for last 30 days.
EXPORT_FILEPATH
specifies where the exported data will be written to. Currently only.xlsx
export type supported.
Rate the current day with 1
, mark it with sports
and friends
tags,
and attach a note "good party with friends"
to this record:
howdy -f ./howdy.journal add 1 sports friends --comment good party with friends
Rate the current day with -1
, attach a note "42"
to this record:
howdy add -1 -c 42
Read records from ./howdy.journal
over the last month,
and display total summary score:
howdy mood
Read records from ./howdy.journal
over the last year that have a tag sports
,
and display total summary score:
howdy mood sports -t yearly
- add GUI (let's be honest, no one wants to type a command with args in terminal just record a digit);
- work on a more advanced querying syntax.