So many of you have probably seen the stress graphs that are part of this site.
I wanted to do a bit of explanation to people who are confused about them, and a few more details to those people who aren’t.
The graph shows the size of my todo list, it’s updated by a cron script every half hour and it’s publicly viewable. Tasks that have been in the inbox (I use the same inbox for incoming mail and for tasks) for more than a week are the red line, more than three days the purple and more than 24 hours the green (the blue is the ‘current’ state and includes all the tasks triggered by calendar actions and emails to reply to… The game is to make the graph smaller – it’s very simple but it’s remarkably effective for me.
The point is that it is, for the most part, a game. I have a lot of things to do for work (“draft paper”, for friends (“buy birthday cards”, and as part of the general overhead of life (“fix shower curtain” – one of my housemates calls it ‘life-admin’ which I think is a nice phrase). I’ve got to do all of these things sooner or later and the more of them I get though the nicer the graph looks. The key thing is that I believe that making something a game makes its easier and because of it I find that I get more work done, am a more attentive friend, and I have properly attached shower curtains.
But you have a six month version as well, what’s that for?
You can play games over long time periods… more seriously it is a fairly accurate indicator of my level of stress. When I’m stressed and I’ve got lots of big things to worry about, that’s when tasks like “wash car”, “look for CPS that are coming up” and “sort out next home visit” start to mount up and that’s when the graph starts to mount up. It’s really quite illuminating…
Isn’t this a lot of work?
It’s entirely automatic. If it wasn’t then I’d be much more tempted to cheat, and more to the point, it would lose a lot of the accuracy…. Overall It’s probably taken me about four hours coding over the last five years, and it’s saved me *weeks*.
What does the raw data look like?
I use a modified version of getmail to generate files like – it runs every 30 minutes as a cronjob on my webserver
34 2012-01-21 1327152611 5 16 10 32 2012-01-21 1327154411 5 14 9 32 2012-01-21 1327156209 5 14 9 34 2012-01-21 1327158012 5 14 9 34 2012-01-21 1327159808 5 15 9 34 2012-01-21 1327161611 5 15 9 34 2012-01-21 1327163406 5 15 9 33 2012-01-21 1327165211 5 13 9 34 2012-01-21 1327167011 5 13 9 31 2012-01-21 1327168810 4 12 8
(left to right this is, current size of inbox, date, seconds since epoch, emails older than 7 days, emails older than 24 hours, and emails older than 3 days.
Periodically, if I get commetitive with my past self or if I want to find out if I’m, say, what my least stressed day of the week is, I might look though this raw file to for comparision purposes.
How is the chart generated?
I put the raw data though a matlab script (although I’d like it to be an R script) as follows…
I then use this Matlab code:
load ~/emailAnalysis/results.txt results=results(size(results,1)-400:size(results,1),:) temp = results(:,3)-1238370000; h=plot(temp,smooth(results(:,1)),':b') set(h,'LineWidth',1) ylim([0 80]) xlim([max(temp)-(86400*7),max(temp)-1]) set(gca,'XGrid','on') ylabel('Emails') hold on i=plot(temp,smooth(results(:,4)),'r') j=plot(temp,smooth(results(:,5)),'-g') k=plot(temp,smooth(results(:,6)),'m') xlim([max(temp)-(86400*7),max(temp)-1]) set(gca,'XTick',[1:86400:(86400*max(temp))+1]) set(gca,'XTickLabel',['Mon';'Tue';'Wed';'Thu';'Fri';'Sat';'Sun']) set(j,'LineWidth',2) set(h,'LineWidth',1) set(i,'LineWidth',2) set(k,'LineWidth',2) xlabel('Time') title('Size of inbox over time (seven days)') print -r3000 -djpeg /XXXX/inbox7day.jpeg hold off
to generate the graphs – both matlab and getmail code run as a cron job every half out on my webserver.