Analize your digital activity's, mood, habits and predict what
to do next is best for your work-life balance
OR
How to mix TODO lists, tracking work sessions,
habit and mood tracking, computer and smartphone tracking,
CBT
techniques, analyze them and build
recommendation system for task prioritization and balanced life
This year is total mess, a lot of frustration. So i decided to make a tool for quantitative self-assessment to track the emotional background and the progress of life goals, habits, and mood. Engineer, huh.
- So I wanted to find (or return) the source of motivation, to concentrate on my emotional condition.
- If it turns out to be useful for someone else (open source) - cool.
- Also to draw attention to myself as a programmer, to find a good job.
The product must have metric(s) and a tracking process to adjust performance.
What is a great work-life balance? People feel it as a normal state of health, a balanced emotional state, etc. We do not measure this state - the metrics are not digitized. It turns out that today I feel good, but I don’t remember how it was a week ago. What about a monthly period? Is there any progress? It's not clear.
Questions running through my head
* How can I objectively measure the quality of my work?
* How to understand that work-life balance is good?
* How to understand what is missing for life drive?
* In what areas do I fade, and on which should I focus my efforts in the first place?
* What patterns of behavior prevail?
* Which of them should have been worked out yesterday? (addition to therapy)
There was interest, and excitement in front of an incomprehensible task.
- The task was to develop a system of metrics, analytics for tracking them, and prediction.
- As a result, I wanted to analyze progress every day and predict (with the help of machine learning) the most suitable tasks (for work and life), and habits for the best balance between life goals.
Here are some self-digitalization pet projects that inspired my R&D process.
- Post by Stephen Wolfram. 10 years this article has been an example for me, um, of "cyberpunk awareness" and possession of analytics tools.
- Here is more up to date experiment from Felix Krause
- Alex Vermeer inspired me in terms of breaking down motivation into components. When I first saw the motivation formula I felt relieved.
- And finally, Simon Chabot analysed miband data, his repo was huge finding.
* Data collection, synchronization, and archiving
* Personal storage server
* Data analysis
* Predicting the best task schedule
* Visualization in the calendar
* Dashboard with metrics and graphs
Metrics system:
- register habits and emotions several times a day.
- we attribute them to each of the vital areas: FINANCIAL, CAREER, EMOTIONAL, PHYSICAL, FUN_RECREATION, INTELLECTUAL, PARTNER, SOCIAL
- enter the value of the assessment\contribution for each action. And counting the total value of personal growth. This is optional. As a result, I settled on a radial chart (upper-left from the very first picture) as the main graph to look at first.
We collect the data from these sources: * Emotions and habits via Telegram bot, 4 times a day, reminders via Google calendar pushes * Actions on the computer from ActivityWatch * Android Activity from ActivityWatch, ActionDash. With root - we immediately take SQL files * Date from smartwatch(Miband4) from GadgetBridge * To-do lists and tasks from the Microsoft ToDo application (via the API - it's easier to immediately SQL-files) * Work sessions are tracked in Toggl (using the API)
What will you need:
- Hosting of your choise(i've used Google cloud)
- Telegram keys, Microsoft Graph API keys, Toggl API key
- Registration of personal Google cloud app (to get access to drive, calendar, etc.)
stack: pandas, PostgreSQL, time-series forecasting, KNN clusterisation, plotly, dash, streamlit, toggl API, Microsoft graph API, google cloud, telegram-bot
- There are problems with registering emotions and habits in real-time. We all have instruments to register a pulse, stress level, and EEG in everyday life. I wish somebody will come up with small and easily accessible sensors for reading emotions instantly (if there are recommendations, write *), yeap, I know about reading emotions by face with CV, and i think it's not ideal yet).
- Therefore, in the project it works like this: in the period from 11 to 14, I experienced this list of emotions, and made these habits. And not: 11-01 - emotion No. 11, 11-49 - habit No. 2 .... That means, we are registering cumulatively. This point then limits the forecasting methods.
And here's the most important:
- The fact that I experienced this emotion and/or performed this habit does not guarantee that it will affect the progress of a particular task. That is, there is no evidence of a causal relationship (and how can this be verified in principle?).
- Therefore, I am a simple Buddhist monk - watching the storm and spinning data in pandas.
-
It was very interesting to face the problems of data format organization. Questions from the series: what storage structure to take to build such a graph after processing-analysis
-
The toughest thing I remember was 2 days spent on 15 lines of code processing data in a specific type of storage. Frustration over the edge - but - this is how steel was tempered)))
-
I started tracking data to analytics, but it still turned out to be a small amount of data to learn on. Partly because sometimes I did not break tasks into small subtasks. For example, I did 1 big task for 3 weeks and did not register subtasks inside it. Lost data. So I had to run on simple ranking at the beginning for the cold-start problem, lol.
-
Due to the small amount of data collected (on completed tasks), the choice of prediction algorithms was limited. I took KNN clustering(with accuracy as the metric) to predict the execution time of tasks (I don’t use other metrics yet). Played with ARIMA for time series of emotions, without any hope.
Spent 240 hours. Lines of code ~ 8200, of which 3500 (experiments) did not enter production, from the rest ~ 15% of someone else's code (smartwatch block)
* Introduce mechanics from CBT. Questionnaires - to encourage writing 5-minute journals. You can then pick up the answers using NLP (natural language processing)
* Analysis of spending budget. automatic micro-investment (or charity) in crypto for unfulfilled goals as a punishment
* Analysis of behavior on the phone and desktop is not screwed yet, but the data is integrated. And think about what features can be built on this data.
* Integrate Anki cards
alicerun is a reference to Lewis Carroll. *My dear, here we must run as fast as we can, just to stay in place. And if you wish to go anywhere you must run twice as fast as that.
other options were: Munchausen (a reference to pulling himself by the hair from the mud), moospace (like mootivation), well, quite a punkish JORK... maybe mr. Jork Munhausen can be fine? I dunno
I will not say that I open the dashboard every day. But I use the entire tracking workflow every day and this creates the effect of self-discipline. I began to notice behavioral patterns more often.
The best thing that has been achieved is a cozy feeling of control over the situation.