This is a follow-up post to Gamification showing how I use it and what purpose does it serve me.
In summary, I'm a kind of control freak who likes all sorts of stats (such as my systems stats or a projects repo stats) displayed neatly all over the place, and it was only a matter of time before I started monitoring myself, and so I wrote a tiny tool, Gamify, that integrates with Emacs' Org-Mode and tracks my skills, their dependencies and their development.
Gamify collects experience points associated with Org-Mode tasks whenever I complete them. Each task can be tagged with any number of skills (Org's tag inheritance is very handy here) and assigned some XP, preferably using
* TODO Write a follow-up post about Gamify. :Blogging: SCHEDULED: <2013-02-02 sat> :PROPERTIES: :gamify_exp: 20 :END: When I complete this task by changing its state to *DONE* Gamify will take care of updating my /Blogging/ skill.
As every Gamify-enabled task is assigned an arbitrary XP some calibration of skill-levels was needed. I've settled for a slightly modified version of DF level names (because I'm nerdy like that) and an exponential effort growth:
It takes roughly 4 years of daily skill training (6 tasks 12 XP each on average) to get a hold at a skill and become Professional, 20 years to become a Legendary hacker and 63 years to become Tesla.
Naturally, to be any useful Gamify has to provide lot's of feedback which it does either in textual form using
Your Gamify stats: Competent at Blogging: 3836/8500 (2%) Competent at C++: 8144/8500 (92%) Proficient at CodeDev: 23805/28900 (58%) Competent at Concurrency: 4129/8500 (8%) Competent at D: 5522/8500 (37%) Competent at Editing: 5283/8500 (32%) Competent at Emacs: 4994/8500 (26%) Skilled at Functional Programming: 8829/16600 (4%) Competent at GameDev: 6104/8500 (50%) Skilled at Imperative Programming: 16092/16600 (93%) Competent at Lisp: 5523/8500 (37%) Skilled at OOP: 9323/16600 (10%) Competent at Project Management: 3963/8500 (5%) Proficient at Programming: 19490/28900 (23%) Competent at Robotics: 6884/8500 (66%) Competent at Software Engineering: 3700/8500 (0%)
...or using Graphviz for graph visualization.
Well, to be honest most of the skills I'm novice or dabbling at don't belong in my defining skill-set, so more like this is me:
...and this is what I'm good at:
Additionally, Gamify monitors my interests...
...and how they interact with each other:
But most importantly, it helps me estimate whether I'm qualified for a particular task or not. Say, you want me to build an Operating System in D. All I need to do is filter my skill-set by D and OSDev, yielding a bunch of relevant info:
I mean I did write a toy kernel in D that does absolutely nothing, so... Yeah... Anyway, say, you want me to help develop an OS... In Lisp... For your robots:
I may not be particularly well-suited for this job right away, but I immediately see lot's of room for self-improvement. I could, for example, take an ML course or two and start a toy robotics project for fun and profit, and who knows, maybe in five years I'll fit just right.
2016-02-05: Adjusted some links & tags.