a personal productivity tool
This is why I'm making fit.
This is what it looks like when you're in a fit.
This is what it looks like when you've done a fit.
(photo note: I have since changed out the hardware, so it looks different. I will post more pictures when the new enclosure is done.)
- [done] Must be able to count up to time work of indefinite duration.
- [done] Must be able to count down to time work of definite (or bounded) duration, like a Pomodoro. This count down will be limited to 30min (a single) and 60min (a double) intervals.
- [done] Should be able to categorize work and log time spent by category. Categories need not be extensive. This can be as high-level as GTD Focus Horizons.
- [almost] Though the code will be portable, I'll be using a physical device which has no function other than the "fit" routine. This device will also be called "fit". It should be small, substantial, and good looking - something I don't mind carrying and looking at regularly (honestly, this is why the kitchen timer isn't good enough). [I still need to make a proper case for this thing, but the device works.]
Though I plan to use this on the purpose-built device, I will ensure that the application remains useable at least via console, since I have seen some purpose for it there. The reason I use a device is for non-computer fits. In fact, more specifically, it is to encourage fits done away from a computer.
- [todo] write the code for use on the cli (fit_cli)
- python3 application
- csv data file
- [done] time representation while in a fit, simplistic, not distracting
- [done] survey at the end of a fit, to measure, well, whatever you want to measure. I use it for "whether or not I stayed on task"
- [todo] write a data file so analytics can be pulled locally.
- [cancelled] implement pausing a fit (I decided I'd rather only allow myself to cancel a fit, rather than permit interruptions)
- [done] implement stopping a timed fit
- [done] make the fFocus list more easily configurable (tokenized everywhere but a list or set)
- [todo] consider making a configuration file from which fit reads
Each invocation is a fit, stored in the csv as a table of "fits". Every fit will consist of the following values:
- focus[fFocus] : personal[ffp], work[ffw], learning[ffl], home, admin
- type[fType] : 60-minute[ft60], 30-minute[ft30], count-up[ftcu]
- hash[fHash] : sha256(fEnd)
- hash_short[fHash_short] : fHash[0:4] (used for naming only)
- start[fStart] : (epoch at start)
- end[fEnd] : (epoch at end)
- duration[fDuration] : (fEnd-fStart)
- survey[fSurvey] : +[fsgood], =[fsok], -[fsbad]
[press] >> (ffp, ffw, ffl) >> [press] >> (ftcu, ft60, ft30) >> [press] >> (displays epoch from start) >> [press] >> (epoch paused) >> [press] >> (epoch resumed) >> [long press | interval elapsed] >> survey >> log .
- [done] selected Pi Zero WH; I wanted to use a pi pico, but they were sold out (well, the tiny 2040 I wanted was sold out), and they don't have wifi just yet. I need wifi for this to be practical at the moment.
- [done] selected Waveshare e-ink 2.13" V2 for low power consumption
- [done] I've got some MX switches, let's get them integrated. Maybe a rotary encoder? idk, I have both. In the end, the rotary encoder was a nightmare and the MX switches were a little too large. Went for a momentary on double toggle.
- [done] freaking decent typography, idk futura pt? I did this on the Waveshare eink verison, but not on the OLED. I prefer the look of the Waveshare, but the OLED is smaller and much more streamlined in code.
- [todo] battery? I like working away from power.
- [todo] robust enclosure, this needs to travel well and be abused; tactility and finish- use should be a satisfying experience.
- [todo] implement a reset button, so I don't have to keep unplugging it.