Upon reflection, my activities of this day (once I stopped singing and gagging) have been little more than yak shaving. The definitive explanation of the concept is an email to the AI Lab.
In fact, I am really quite perpetually engaged in such activities. Most hackers are, it seems. And, I would expect that most people in general find themselves in a somewhat related cycle.
The worse example of yak shaving in my life right now is the combination of mud and work. The best visual explanation of this phenomenon that I can think of for non-hackers is as a stack of cards – each with a todo item on it. I have something that I need to do, it gets placed on the table. While performing the task I either discover something that needs to be done beforehand or I am presented with another task.
Pre-reqs and more important tasks go on top of the stack, less important tasks go on the end of the stack. I can only work on the item on the top of the stack.
Using the real world example:
I need to redesign the UATV site and make the KAMP site dynamic again after it was remodeled by other people during my breakdown. The UATV redesign isn’t as important as the KAMP upgrade, so KAMP gets priority, is the top card of the two.
However, I am also quite possibly leaving ECE in the near future, so I really should be working on the Alumni server migration to OSX. This requires that I migrate old user accounts, migrate the account generation system, and add a few more features to the administrative interface. So, I need to figure out how to move the accounts over (this solves porting the generation system). Admin interface isn’t a priority, so it gets to be on the bottom of this new stack of cards before being added to the whole stack.
I also want to work on the mud. This has a lower priority than the work projects, but I am also constantly being hammered on IM and email – so the items on the mud stack keep moving around even when I’m not actively working on it.
My current long-term goal for the mud right now is the completion of my spell list, a fully realized crafting tree, and the formation of the PW guild as an organization. For complete and total satisfaction with spells, I need material components. Components require crafting recipes. These recipes require raw materials that are harvestable in different ways. For full satisfaction with recipes, I want people to be able to scribe them. Full satisfaction with magic would also imply spellbooks, which implies books. For books to work the way I like, they need to have language support.
The resultant stack looks something like this:
- alumni server planning
- meet with tony
- discuss overall server goal and make checklist
- discuss default user options and settings
- write a 'terms of service' document to refer users to
- alumni account transfer script
- find out where passwords are stored
OR
- write some sort of magical transfer program that auths against the old server
- alumni account system migration
- alumni admin interface and utilities
- might be deprecated by osx utilities
- password reset button
- kamp tune-up
- figure out what to do about sports page
- uatv redesign
- poll for ideas
- consider new site flow
- make change on dev copy of site
- test dev site for reactions
- launch new site
- rewrite crafting tree (notes)
- change base gathered resource objects
- consolidate all mines and plants in the game
- introduce new materials
- fix gemstone drop rates
- write intermediary phase recipes
- migrate existing system to support tiers of material difficulty
- write new recipes for general in-game objects
- mud language support (ml)
- paper rewrite
- scribe recipes
- books
- recipes and spells can go into pages of books
- make spell component ingredients farmable
- write recipes to make usable components out of ingredients
- complete spell list
- build pw guild hall
- create books and put them in pw library
- advertise the guild's opening
And while I was writing this, my boss at engineering just pointed me at Nagios, which thing has now been added to the top of the stack