Watch video (in Hebrew): http://parleys.com/play/53f7a9cce4b06208c7b7ca1e Type classes are a fundamental feature of Scala, which allows you to layer new functionality on top of existing types externally, i.e. without modifying or recompiling existing code. When combined with implicits, this is a truly remarkable tool that enables many of the advanced features offered by the Scala library ecosystem. In this talk we'll go back to basics: how type classes are defined and encoded, and cover several prominent use cases. A talk given at the Underscore meetup on 19 August, 2014.