JabberCat - Vaporware, materialized!

UPDATE: Looks like bitbucket is having some issues, see my local repository if you’d like to browse or clone the code.

JabberCat is a jabber bot that can be fed messages via HTTP to enable scripts and other processes the ability to communicate via Jabber. Communicating via JabberCat is meant to be language agnostic. If your favorite language has an HTTP library(as most do), you won’t need to understand jabber to get your messages to a jabber chat or user.

This project started out as nothing more than vaporware, incubating in the brain of a fellow Pythonista named Mike Pirnat. It materialized shortly after Mike presented a talk at ClePy about ideas he had that never came to life.

JabberCat is ideal for plugging into your continuous integration environment to broadcast statistics(code coverage, etc), or even statistics/events/alerts within your network.

Currently there are two tools for passing messages to JabberCat. A web interface, and a command line tool. The web interface allows you to post messages from your browser. The command line client is ideal for piping messages to, like a few lines of a log file, or source code.

JabberCat has SSL support, but it seems to be a bit buggy at the moment due to it dropping connections unexpectedly. There are plans in the works to implement some new features and spruce up the web interface.

Currently the software is very green (read: alpha), and is not recommended for any kind of production use. You should help this project get some traction, really. Why not hop over to Bitbucket and clone/fork the main repository?

JabberCat on Bitbucket: http://bitbucket.org/benjaminws/jabbercat/

JabberCat is written in Python and is comprised of the following components:

If you think this software could be useful to you, and would like to see it evolve, please don’t hesitate to submit patches or enhancement ideas. You could also fork the repository or report issues on the issue tracker

I have submitted a talk to CodeMash to speak about JabberCat, hopefully it will be accepted! I plan on having a polished stable release by then :)

Thanks for reading!

Note: Image credit goes to Dan Buch

Python STOMP Updates

Due to a flurry of activity(like, you know, a couple people) on bitbucket and twitter, it became apparent to me that people were actually using the library I created for working with message brokers that utilize the STOMP protocol. This is exciting news for me! ;-)

In response I decided it would be a good idea to, you know, maintain the software and polish it up a bit. There were three forks of the python-stomp repository on
bitbucket, so I waded through diffs to see what ideas/suggestions/improvements others had. Everything I saw looked great, so I pulled in and merged all the changes in to the main repository. Thankfully this was a trivial task because mercurial is FREAKING AWESOME. The next step was to polish it all up. So, I went to PEP8ifying where needed(thankfully others had done a great deal of that work for me), and unit testing new functionality introduced by the other developers.

There are many improvements/changes in the latest iteration of this library, so I’d like to outline some of them here.

  • Renamed to stompy
  • Fully documented with Sphinx
  • Simplified client interface with automatic transaction support (abstracted stompy.stomp as stompy.simple)
  • Intermediate message queue layer
  • Simplified authentication
  • More resilient and informative error handling
  • Polling/Non-blocking support
  • Now able to subscribe to multiple destinations at a time
  • Tested and known to work well with ActiveMQ and RabbitMQ
  • Now available on pypi!

This is just a high level overview of the major changes to stompy. For more detailed information, have a look at the source and documentation.

I’d like to thank a few people that have submitted patches and new functionality.

In closing, I’d like to point out that this “project” was an exercise in TDD(Test Driven Development) for me. I wrote the tests first, then the actual code to make the tests pass. This was also the first time I had used the mocking library Dingus. This has been a pleasurable and enlightening development experience for me!

Thanks for reading!