Say Hello to Meatbot

What is Meatbot?

Meatbot is a HipChat bot for managing status updates for our growing team of Evangelists at DataStax. It’s built in Python 2.7, utilizing the Will library. The status updates are stored in Cassandra using cqlengine. Yep, it’s up on github.

There’s a few simple commands. First, you tell Meatbot about each project you work on.

Once you’ve got your projects, you can list them with lsproject or delete them with rmproject.

Sometimes with a team working across different time zones without set hours you end up going a few days without talking to everyone. It’s important to understand what your teammates are working on. This is why we can as wtf:

It’s also possible to get a list of what everyone’s doing with the derp command. Of course, maybe you’re not interested in what everyone is doing…

Why didn’t you use use an existing task manager?

We wanted to add a way of keeping track of what we do without adding any real mental overhead. We all work on open source projects, so they have their own github issues, JIRA tasks, etc. We weren’t looking to mirror or aggregate all this information, but provide more of a simple dashboard of a few high level ideas that would be useful for the entire team. The bot is convenient, since we’re already in chat for a good portion of the day, it’s easy enough to stay in there.

I’ll be honest, writing a HipChat bot is also a lot of fun. Will for the most part made is ridiculously simple to get going. I had to go slightly outside the intended use case which meant stepping through the codebase, but it was worth it to spend a few hours reading other people’s code.

Is Cassandra Overkill?

Absolutely not. I actually wrote the initial version of MeatBot using SQLAlchemy and PostgreSQL, thinking it would be a good case for me to use a RDBMS again. I then rewrote it using Cassandra and cqlengine. I have more years experience using a RDBMS, and yet it took less time to use Cassandra than Postgres. Data modeling in Cassandra is pretty straightforward, and having sync_table available through cqlengine made it a breeze to make changes.

A lot of people think they have to “grow into” Cassandra, that it’s only meant for massive scale. They’re correct in that it’s designed to handle those situations, but I don’t believe it’s exclusive to them. I believe we’re at the point where Cassandra can (and should) be the first choice for new applications as well as ones with extreme uptime and load requirements.

Anyway, MeatBot lives and is out in the world, chatting away with us and keeping track of the team. It’s open sourced on github, so if you find your team needs a really lightweight system for doing status updates, grab the code and hack away. Enjoy!

If you found this post helpful, please consider sharing to your network. I'm also available to help you be successful with your distributed systems! Please reach out if you're interested in working with me, and I'll be happy to schedule a free one-hour consultation.