MMO Life

Posted on by Idorobots

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.

Welcome to the Shameless Self-plug City, where the graphs are green and the girls are... Well, absent...

Endless adventure

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 gamify-assign-some-exp:

* 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:

Tesla should be a valid skill level everywhere. Tesla is awesome.

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 gamify-get-pretty-stats:

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.

Some more examples

In a nutshell, this is me:

It's a me, nerdling!

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:

Adequate and above.

...and this is what I'm good at:

Took me a bit longer than the above plot might suggest.

Additionally, Gamify monitors my interests...

We all like games, don't we?

...and how they interact with each other:

...and robots. I do robots, after all, right? Guys? Anyone?

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:

Bad idea...

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:

This is actually one of my goals.

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.