Like many, I had to work remotely starting with the pandemic, and had difficulty saying focused. I turned to Pomodoro, but it felt artificial and self-imposed. Pomodachi hopes to solve that in a few ways.
- Make it fun: Pomodachi should give a fun little way to flavor and motivate productive time without being overly gamified.
- Make it low impact: Pomodoro is about inducing flow, and the awareness of the state of timers can be a distraction. Pomo abstracts away the need to know the exact state of your timers during work time, letting you focus on the present.
- Make it hackable: I'm learning a lot of stuff myself in the process of making this, so I picked parts and make choices that hopefully make the project accessible to any re-implementers.
User Experience (GIFS OF USE ON GITHUB)
On boot we see Pomo, a small clock in the bottom, and a food count at the top. Press either button alone to feed Pomo.
When you run out of food, Pomo will need to go exploring for new food. Press and hold both buttons down to start a Pomodoro session, Pomo will leave to search for food until break time where Pomo will return with a suggested break activity.
Press either button to start the break, and then again when the break ends to start the next leg of the Pomodoro and so on until all legs are completed to get the session reward.
Based on a configurable daily eating rate, Pomo will need food to survive. Fall behind your goals and low on food? If Pomo is very hungry, it will feed a multiplier to restore health so you will always be able to recover from dips in productivity.
TIP: If the key buttons are lit up, holding both down will move you to the next phase.
* Code is by droxpopuli under the MIT Licence.
* Runtime and Library is by Adafruit under the MIT Licence.
* Art and Audio is by droxpopuli, under CC BY 4.0.
* Enclosure is a modification of the PyPortal Retro Cases from Adafruit, edits by droxpopuli, both under CC BY 4.0.
* Persistent Storage to hold state between boots.
* Total Refactor out of this Prototype/Proof of Concept Code
* Implement a "first boot" to allow time setting from the main file itself.
Ideas Going Forward
* Setting Time and other settings in runtime. Integrate with first boot.
* Increase Tactile Response of setting the timer with a haptic motor.
* Portable Enclosure
* Implement preferred work times where Pomo reminds the user to start a set.
* Create more virtual pet style features such as development, and growth.
* More Virtual Pet interactions (make use of the accelerometer, the touch analog connections?)
As of now all configuration is a set of constants at the top of the python file but configurable is:
|length_of_leg||How long a leg of a session is in minutes||20|
|length_of_break||How long breaks are in minutes||5|
|legs_in_session||Number of legs in a Pomodoro session||4|
|food_for_leg||Food gained in each leg of a Pomodoro||1|
|food_for_session||Food gained on completion of a full Pomodoro set||5|
|session_rewards||Automatically calculated total food in a session||<N/A>|
|eating_rate[day]||Per day full Pomodoro goal||(0, 1, 2, 2, 2, 0, 0)|
|difficulty||How many session rewards hungry before pomo runs away||7|
|hunger_multiplier||If hunger is negative, a multiplier to allow for catching up||3|