ZenIRCBot and the Art of Pub/Sub

Accepted Session
Short Form
Scheduled: Wednesday, June 27, 2012 from 2:30 – 3:15pm in B201


How Pub/Sub helped my IRC bot stop living in the past and live in the moment. Also, special bonus features for polyglots!


When writing my dozenth IRC bot I decided that instead of the standard monolithic or plugin based bots I’d written in the past, I would write one in a highly decoupled way. Instead of plugins, I’d have services!

What I hope to teach in this talk is how one can use microservices and a simple homespun protocol to write software that has very little holding it back. Things this paradigm allows for:

  • Multiple languages in the same code base.
  • Adding more services without needing to modify the core.
  • Interaction with external services with just a small compatibility layer.

Note: I use an IRC bot to show these things, but I’ll give examples of other more real world systems that can also benefit from these lines of thinking. Hopefully leading you to come up with new and even more interesting use cases for these ideas and technologies.

Speaking experience

I've spoken many times at PDX Python and used to do speech and debate in high school.


  • Biography

    Wraithan is a software developer born and raised in the great city of Portland, Oregon. He started learning to code before he started high school and has been hooked every since. Starting with C++, and proceeding through a plethora of languages such as Java, Perl, PHP, C#, Python, Common Lisp, JavaScript, Clojure and even more. He is a strong believer in being a polyglot making one better as a developer.

    His speaking career is modest but he enjoys it. He has spoken numerous times at PDX Python and used to compete in speech and debate when he was in high school. His favorite events being impromptu and public debate.

    He helps support Read the Docs. Has patched many open source projects over the years, mostly libraries he needed for his many projects. His favorite projects his own right now are: ZenIRCBot and GitHub Repo Widget. And if the stars align, he can be found on his blag

    The rest of his code and projects can be found on Github