Yak Shaving
Published by kyle May 2nd, 2005 in NewsWhen I heard about this project concept I was intrigued, after seeing all the plugs on ptorrone’s weblog I finally gave in and signed up. Well my first Make came in, and I must say, its an impressive premier issue. Anyway, my point here wasn’t to shamelessly plug Make like ptorrone, who, in all fairness, writes for them so is allowed to, the point was to cite the source of the following quote with a bit of background.
They had an article titled ‘yak shaving’ - now if that didn’t catch my eye i’m sure it was the “life hacks: overclocking your productivity” that made me keep reading.
They continue to describe just what this crazy term means - (the term coined by one of those brains up at MIT i believe)
Yak shaving is the technical term for when you find yourself eight levels deep - and possibly in a recursive loop - in a stack of jobs. You start out by deciding to tidy your room, and you realize in order to do that you’ll need some more trash-bags, so you need to go to the [store], which will involve getting out the car, but the car needs gas, so you’ll need to go to the gas station first, which means you should probably find your gas discount card, which involves finding your keys, which are in this room somewhere…
Eerily close to how my day usually goes, I wondered how much time i must waste on similar tangents everyday, since it probably does hit recursive loop state, i will avoid that nasty divide by zero, and just move on to what i might be able to do about it.
Stickes - thats right, I have started a ‘tangents’ sticky. So every time I am already involved in completing a task and i get interrupted by one thing or another and i go to break from completing my original task, i quickly jot down the tangent and go back to what i was going. that subroutine is non-recursive and will avoid any nasty stack overflows. the sticky will allow me to avoid forgetting to do the tangent and still complete the original task. once said original task is done, i have a full list of things waiting to be done - thus preventing a buffer-under-run.
So, if you are at all interested in some cool hardware hacks, DIY projects involving micro-controllers, soldering or other total bad-ass stuff - check out make if you find any other good ways to improve productivity let me know.
On another note, school is over for the semester, so expect some changes around here. (this design has GOT to go.
Why is everyone so afraid of recursion? You’re just not using it properly. What you need is some good tail-call optimization so your recursive calls end up solving the greater problem. That’s what it’s for, ass.
Anyway, the sticky process can, itself, become a recursive call if you run out of stickies.
oh yeah, and the design totally rocks.
i wonder which design that was…