Talk Recovering from Enterprise from Jamis Buck at Ruby Conf 2008. The tagline was about Dependency Injection, but the essence of the talk is that you should not transfer your knowledge directly from one programming language (e.g. Java) to another one (e.g. Ruby). You are much better of if you learn the concrete idioms of a programming language and use them to solve your problems.
lessons learned, story
Expose what you need when you need it.
seperation of concerns is a good thing but if you go to the extreme you get component soup.
component soup fuzzes the line between private and public api.
depenency injection works if you use it with big blocks at application level, but not at small, library level