Daniel Westheide

on making software

Talks and Workshops

kontextfrei: A new approach to testable Spark applications, Scalar Conf Warsaw 2017, April 08, 2017

Abstract:

Apache Spark has become the de-facto standard for writing big data processing pipelines. While the business logic of Spark applications is often at least as complex as what we have been dealing with in a pre-big data world, enabling developers to write comprehensive, fast unit test suites has not been a priority in the design of Spark. The main problem is that you cannot test your code without at least running a local SparkContext. These tests are not really unit tests, and they are too slow for pursuing a test-driven development approach.

In this talk, I will introduce thekontextfrei library, which aims to liberate you from the chains of the SparkContext. I will show how it helps restoring the fast feedback loop we are taking for granted. In addition, I will explain how kontextfrei is implemented and discuss some of the design decisions made and look at alternative approaches and current limitations.

Links:

Don’t Fear the Implicits: Everything you need to know about typeclasses, Scala Mini-Meetup Berlin, January 11, 2017

Abstract:

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.

Typeclasses from the ground up, talk at Honeypot Tech Meetup, Berlin, September 28, 2016

Abstract:

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.

Links:

Don’t Fear the Implicits: Everything you need to know about typeclasses, Scala Days Berlin 2016, June 16, 2016

Abstract:

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.

Links:

Playing Nice: Designing and implementing well-behaved web APIs, talk at Play Framework User Group Berlin Brandenburg, March 25, 2015

Abstract:

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.

Links:

Building well-behaved web APIs with Play: The obstacles and how to overcome them, talk at Amsterdam.scala Talks&Drinks, January 15, 2015

Abstract:

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, I 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.

Links:

Understanding SBT: Towards a typesafe and programmable build, talk at Scala User Group Berlin/Brandenburg, September 16, 2014

Abstract:

Every developer hates build tools, and because of that, we tend to configure our build by copying snippets from the intarweb instead of trying to understand our build tool. This is no different or even more so the case with SBT, which is some ways is fundamentally different from other build tools.

However, by doing so, you miss out a lot of what SBT can do for you.

In this talk, you will learn about the most important concepts underlying SBT, how it helps you to program your build in a typesafe way, and how to extract re-usable parts of your build configuration into an SBT plugin. You’ll also see how using SBT as an interactive development environment can make your daily development work much more fun and productive.

Links:

Learn you an SBT for fun and profit! - talk at Scala Days 2014, Berlin, June 17, 2014

Abstract:

SBT has been the subject of quite a bit of controversy among Scala developers. It’s different enough from other build tools that not everyone has the patience of really getting into it. As a natural consequence, they tend to either go back to the build tools they know or employ sbt in a way that is similar to what they are used to and doesn’t require them to fully understand it.

While it is possible to build your projects with only a minimal comprehension of sbt, there is a lot to gain from really understanding how it works. If you are one of the people who have never gone a lot further than “sbt test”, this talk is for you.

You will learn how it can make your daily Scala development workflow more productive. We’ll dive into the concepts behind sbt and see how we can embrace its interactive shell, how to customise our build to our needs, and what the sbt ecosystem of plugins has to offer to improve our development workflow.

This talk will involve a lot of live sbt interaction, and also some coding. At the end of the talk, we will have seen not only what sbt and the existing ecosystem has to offer, but also built our own little sbt plugin.

Links:

Event Sourcing with Akka - talk at Scala User Group Berlin/Brandenburg, June 19, 2013

In this talk, I gave an introduction to the underlying concepts of the Event Sourcing, CQRS and Memory Image patterns and one might go about implementing them with the tools available in the Scala ecosystem, specifically Akka. In the second part, I presented the Eventsourced library, demonstrating how it makes it pretty easy to develop an event-sourced application with Akka.

This talk was based on the workshop at flatMap(Oslo) 2013, see the links of that one for slides and the example project.

Event Sourcing for Functional Programmers - workshop at flatMap(Oslo) 2013

Abstract:

Event Sourcing, CQRS and Memory Image are architectural patterns that often go hand in hand, and they have a strong following in the .NET community. Unfortunately, solutions found there and in existing Java frameworks follow a very object-oriented approach. However, the very ideas behind these patterns, especially event sourcing, are a natural fit for a functional programmer’s mindset.

In this workshop, I give an overview of the rationale behind employing these patterns and the tools we have available to implement them as functional programmers. This is followed by a walk-though of an example application, making use of the Eventsourced library for Scala and Akka.

Links:

Comments