Daniel Westheide

Daniel Westheide is a senior consultant at innoQ Deutschland GmbH and has been developing server applications on the JVM for 7 years. He is particularly interested in functional programming and distributed systems and published the e-book “The Neophyte’s Guide to Scala”.

Talks

  • Don’t Fear the Implicits

    Scala Mini Meetup Berlin 11. January 2017

    Developers who are new to Scala often shy away from coming into contact with implicits, and by extension, understanding typeclasses. In big organizations that have been adopting Scala at scale, you sometimes even come across hard rules that put a ban on the use of implicits because that language feature is considered to be too advanced and not understood by a lot of developers. On the other hand, implicits and typeclasses are used heavily not only by a lot of the most important Scala frameworks and libraries, but also in the standard library. Given the fact that it is so hard to evade them when writing real world Scala code, I would like to encourage developers adopting Scala to overcome their fear of implicits and instead embrace the typeclass pattern.

    In this talk, as an intermediate Scala developer, you will learn everything you really need to know about typeclasses: What they are good for and how they compare to what you are familiar with from object-oriented languages, when you should and should not use them, how the pattern can be encoded in Scala and how to write your own typeclasses, how to provide instances of typeclasses for your own or existing types, and how to do all of this with minimal boilerplate. Throughout the talk, you will see numerous examples of typeclasses used in the Scala ecosystem and the standard library, and you’ll see that you don’t need to know anything about category theory to benefit from embracing typeclasses.

    Read more
  • Typeclasses from the ground up

    Honeypot Tech Meetup: Staying functional with Scala 28. September 2016

    When it comes to typeclasses and implicits – the mechanism used for implementing this pattern in Scala – there appears to be a big gulf: They are widely used not only in many popular Scala libraries, but also in the standard library. On the other hand, many Scala developers are not familiar with them or find them too daunting.

    Since it is difficult to evade them when writing real world Scala code, I would like to encourage developers adopting Scala to overcome their fear of implicits and instead embrace the typeclass pattern. At the same time, I want to raise awareness of the problems that can arise when you do so too eagerly.

    In this talk, as an intermediate Scala developer, you will learn typeclasses from the ground up: What they are good for and how they compare to what you are familiar with from object-oriented languages, when you should and should not use them, how the pattern can be encoded in Scala and how to write your own typeclasses, how to provide instances of typeclasses for your own or existing types, and how to do all of this with minimal boilerplate. Throughout the talk, you will see numerous examples of typeclasses used in the Scala ecosystem and the standard library, and you’ll see that you don’t need to know anything about category theory to benefit from embracing type classes.

    Read more
  • Developers who are new to Scala often shy away from coming into contact with implicits, and by extension, understanding typeclasses. In big organizations that have been adopting Scala at scale, you sometimes even come across hard rules that put a ban on the use of implicits because that language feature is considered to be too advanced and not understood by a lot of developers. On the other hand, implicits and typeclasses are used heavily not only by a lot of the most important Scala frameworks and libraries, but also in the standard library. Given the fact that it is so hard to evade them when writing real world Scala code, I would like to encourage developers adopting Scala to overcome their fear of implicits and instead embrace the typeclass pattern.

    In this talk, as an intermediate Scala developer, you will learn everything you really need to know about typeclasses: What they are good for and how they compare to what you are familiar with from object-oriented languages, when you should and should not use them, how the pattern can be encoded in Scala and how to write your own typeclasses, how to provide instances of typeclasses for your own or existing types, and how to do all of this with minimal boilerplate. Throughout the talk, you will see numerous examples of typeclasses used in the Scala ecosystem and the standard library, and you’ll see that you don’t need to know anything about category theory to benefit from embracing typeclasses.

    You can find a video of this talk here.

    Read more
  • Playing Nice: Designing and implementing well-behaved web APIs

    Play Framework User Group Berlin Brandenburg 25. March 2015

    Providing a great web API means being a well-behaved citizen of the web, and hence, to play nicely with all the other citizens out there: Browsers, caches, proxies, crawlers and so on.

    Unfortunately, the Play Framework, like many other web frameworks, does not offer a lot of help in implementing such a well-behaved web API. However, it turns out to be quite flexible and modular, so we can easily extend it or replace parts of it that stand in our way.

    In this talk, you will learn about principles for designing well-behaved web APIs and how to implement them with Play. Daniel will discuss where Play gets in the way, show how we can overcome those obstacles and introduce a few libraries to ease the development of REST APIs with Play.

    Read more
  • Building well-behaved web APIs with Play: The obstacles and how to overcome them

    Amsterdam.scala Talks & Drinks 15. January 2015

    Building applications that follow the REST architectural style can be quite cumbersome. Like most other web frameworks out there, the Play Framework does not support you a lot in building well-behaved web APIs. On the other hand, it makes implementing not-so-restful HTTP APIs super easy. As a consequence, developers choose the path of least resistance.

    However, the Play Framework is actually quite flexible and modular, so we can replace parts that hinder us and add abstractions that help building RESTful web APIs.

    After a motivational introduction to the nature of truly RESTful web APIs, Daniel will explain where Play gets in the way of building them and show how we can overcome these obstacles. I will introduce libraries for supporting common hypermedia formats and show how to implement Play-based web APIs in a resource-oriented manner.

    Read more

Content

  • The Empathic Programmer

    Link 17. January 2017

    In an article published on his personal blog, Daniel Westheide shares his take on empathy, and lack thereof, in the tech community and at the workplace, and how it relates to inclusion and diversity.

    Read more
  • The perils of shared code

    Blog Post 14. November 2016

    In this blog article, I want to examine why using a sharing code between microservices may sound attractive in the first place and why it can cause bigger problems than the ones you try to solve.

    Read more
  • Solving the wrong problems

    Blog Post 03. June 2016

    Instead of rushing to an engineering solution to a problem, we would often be better off by lying back and determining the root cause of our engineering problem, which is often an architectural one.

    Read more
  • When Option is not good enough

    Link 26. April 2016

    In an article published on his personal blog, Daniel Westheide explains why overloading the semantics of Scala’s Option type can lead to confusion and why introducing custom algebraic data types leads to code that is easier to read, less error-prone and closer to the language of the domain.

    Read more
  • Recent debates about REST versus message passing in microservice communication have led to some confusion. What is meant with asynchronous communication in this context and why is REST a perfectly valid choice?

    Read more