T6: Systems Programming in Scala

  • Steven Jenson Twitter
  • Marius Eriksen Twitter
September 23, 2011 9:00 AM - 12:30 PM

Abstract

In this tutorial you will learn Scala from a systems programming centric point of view. By the end of the tutorial you will have built a simple, robust and performant distributed search engine for tweets using many functional programming idioms in a systems context. Scala is a large language, so we won't cover every nook and cranny. However, the most important concepts will be covered, and participants will be left with experience with writing a non-trivial Scala application and with the skills to learn the rest by themselves.

We start out by teaching the basic Scala concepts and language syntax.

Basic Language Concepts

Next we introduce a few Twitter-specific concepts that will be used in our example application

Twitter Concepts

Followed by building our example application: a distributed search engine for tweets built using functional concepts

Build our Search Application

Lastly we will discuss how these functional concepts map onto the object-oriented JVM.

How Scala concepts translate to Java

Audience

We assume attendees have working knowledge of basic functional programming constructs such as pattern matching, higher order functions and recursion. Basic knowledge of object oriented programming (classes, methods, inheritance) is also required. Familiarity with Java concepts is a plus, but not required.

Software Prerequisites

Steve Jenson

An engineer at Twitter since 2008 focused on building Scala applications and libraries for high-volume systems. He has been programming on the JVM since 1999 and in Scala since 2007. He's a contributor to a number of open source Scala libraries.

Marius Eriksen

Marius works on systems infrastructure at Twitter. He has worked on RPC and streaming systems, profiling tools, storage & indexing systems and our front-end serving stack. He loves applying functional programming techniques to these domains.