euruko2012/call-for-proposals — pull request #84 by mitchellh (2012-03-23 01:28:57+00:00)
Title: Building a Ruby Library, the Parts No One Talks About

# Building a Ruby Library, the Parts No One Talks About

We all interface with Ruby libraries every day, so we all know what makes up a "good" Ruby API. But there is a lot more to a "good" library than just the API: proper logging, flexible configuration, a sane exception hierarchy, and useful documentation, just to name a few. How do we do these things properly? What pros/cons are there to different approaches? Unfortunately, no one really talks about these things, despite being very important to the overall feel of a library.

In this talk I'll share my knowledge of these things from being the maintainer of popular Ruby applications and libraries. I'll show you the idiomatic Ruby way to do logging, configuration, exception handling, and much much more. But don't worry, I won't just be preaching, I'll show you the reasons why these methods have become the community approved way of doing things.

## Mitchell Hashimoto

Mitchell Hashimoto is an operations engineer passionate about all things open source. For four years he was a web developer for a Ruby on Rails studio, and for the past year has been an operations engineer for a start-up company in San Francisco, CA. Mitchell is one of the creators and current maintainer of Vagrant, the tool for creating and distributing virtualized development environments. Vagrant is used by thousands of developers worldwide and many large companies including Tumblr, GitHub, LivingSocial, and more.

Mitchell has spoken at many conferences in the past year, including FOSDEM, RubyConf 2011, DevOpsDays in Sweden, and more.

![Profile picture](http://www.gravatar.com/avatar/54079122b67de9677c1f93933ce8b63a)

- [My website](https://github.com/mitchellh)
- [My twitter](https://twitter.com/#!/mitchellh)
- [Past talk slides](http://speakerdeck.com/u/mitchellh/p/the-wide-range-of-devops)
- [Past talk video](http://vimeo.com/31367609)