Core idea is this:
Use the principles of YNAB to budget time. Keep in mind the differences between time (need to match certain amount per week) vs. money (need to be under certain amount per week). Deficits and Surpluses need to carry over.
Sticking with “weekly” might make it tricky, and restricts the way the app can be used. How about “Budget the next X hours”
I have five important activities to do, and have trouble balancing them. It would be easier if I had a “time budget”.
If I could set a target number of hours to each per week, and track my surplus & deficit, I’ll stay balanced and certain things I’ve been leaving behind (e.g. PhD) will get done.
Each activity requires 3 elements:
Optionally, can include:
Also need a way to:
The core idea is that each meter measures the difference between how much time we’ve spent on an activity, and how much we should have spent so far according to the budgets.
[;\Delta_i = \frac{t_i}{t} - \frac{b_i}{T};]
where [;t;] is global time elapsed, [;t_i;] is the elapsed time for activity i, [;b_i;] is the time budgeted to i, and [;T;] is the total time we’re covering.
(use TeX the World chrome extension for Latex)
Problem with this approach is that it requires resetting, and doesn’t allow for carrying over of the surplus/deficit (which is the whole point).
Require that the delta change shouldn’t be too fast at first, too slow at end (as happens with linear mapping).
Mapping should be like this:
t : total time elapsed
ti[] : array of time elapsed per activity i
bi[] : array of budget amounts per activity i
T : total time to budget
dt : time step
tick() {
t = t + dt;
ti[0] = ti[0] + dt;
//etc
}
updateMeters() {
setMeter(id, deltaToPercent(id));
}
setMeter(id, percent) {
//select relevant progress bars, set values
}
deltaToPercent(id) {
var x = ti[id];
var b = bi[id];
if( x > 0 ) {
return 100*x/(1-b/T);
} else {
return 100*x*T/b;
}
}