Troubleshooting collectd / statsd / Graphite

Troubleshooting Graphite can be a bother. Determining where a problem lies requires verification of the data at all of the points of communication. The best tool I've found for this is ngrep:

sudo ngrep -lqd any ping tcp dst port 2003

The following one-line command finds ping metrics submitted over TCP to Graphite and highlights them using grep:

match='ping'; sudo ngrep -lqd any "${match}" tcp dst port 2003 | grep -E --line-buffered --color=tty "${match}"

Changing the protocol and port allows easy inspection of metrics sent to a statsd listener, from carbon-aggregator to carbon-cache, etc.

See the man page for more information:


Dungeon World Dice Probabilities


Each of the graphs below was created by simulating 100,000 dice rolls per Ability Score (500,000 rolls per graph and 1,500,000 total rolls). The work was inspired by A Treatise on Different Dice-rolling Mechanics in RPGs. The graphs were created using TimZehta/rpgdice · GitHub.


2014-04-01 edit: updated graph labels.

RPG Dice


I wrote a Python program that simulates different RPG dice mechanics (rulesets) and creates graphs showing the probability of the different outcomes: TimZehta/rpgdice · GitHub!

matplotlib install

matplotlib is super painful to install on OS X Mavericks 10.9.2. I ended up creating an installation script (install_requirements.sh) to help with debugging the mess and allowing me to reliably reproduce success.


This project was the first time I've worked with ggplot. I'm very glad for the shortcuts it provided. I would love to see it become more well known and successful.