Schedule

Saturday

8:20 AM

Checkin

Show up early to make sure you get a good seat! We'll have coffee, tea, and various muffins, pastries, etc. available for you to snack on before the main event gets underway.

9:00 AM

Paul Phillips

Keynote: We're Doing It All Wrong

My conclusion after moving a million lines of code is that everything we do (plus or minus) is wrong. Henry Ford said "If I had asked people what they wanted, they would have said faster horses." Our horses are now a billion times faster: our horses may well be the fastest in the galaxy. Are we too comfortable on our horses? Would we recognize better mounts if they came along, but didn't look like horses? Is the state of our profession one which warrants pride, shame, or despair? I will explore these questions with unwarranted optimism.

Paul writes code.

Keynote, PNW Scala 2013 from Paul Phillips

10:00 AM

Clint Tseng

Scala for Javascript Kiddies; Javascript for Scala Nerds

What do you do if you are a Scala lover who writes complex, interactive web application interfaces for love and for a living? What do you do if your company writes software that aims to bring about radical change in government, but you still have to play by government rules? What do you do if nothing out there satisfies your needs for both a fantastic user experience and beautiful, functional code?

In this talk I describe how a quest to fulfill a government mandate for accessibility led to the development of a new interface framework based largely on Scala-like philosophies, and how one small monadic abstraction can change the entire face of a codebase. We will cover how Functional Reactive Programming can be usefully applied in a imperative-functional hybrid environment, and the upsides and downfalls of attempting to apply a very Scala-based mindset onto a fully dynamic language like Javascript. The work covered in this talk culminated in a framework called Janus (https://github.com/clint-tseng/janus), and while very young, the implications and influences behind it are very strong, and very much derived from my time learning and building Scala code.

Clint is a user experience designer of complex web applications who knows just enough about code to be dangerous. Thankfully for those around him, while he's not a fantastic coder, he thinks about programming deeply; it is this passion for merging experience and code that led him to Scala, both as a language and as a philosophy. While it's been a while since he wrote Scala day to day, his time with it has had a profound impact on his opinions and outlooks as a developer, and he's eager to both teach what that means in his world, as well as learn what exciting innovations others are making.

Slides

10:45 AM

Evan Chan

Akka in Production: Our Story

Everyone in the Scala world is using or looking into using Akka for low-latency, scalable, distributed or concurrent systems. We want to share our story of developing and productionizing multiple Akka apps, including low-latency ingestion and real-time processing systems, and Spark-based applications.

  • When does one use actors vs futures?
  • Why did we go with Logback instead of Akka's built-in logging?
  • Can we use Akka with, or in place of, Storm?
  • How did we set up instrumentation and monitoring in production?
  • How does one use VisualVM to debug Akka apps in production?
  • What happens if the mailbox gets full?
  • What is our Akka stack like?

We will share best practices that we've discovered when building Akka and Scala apps, pitfalls and things we'd like to avoid, and a vision of where we would like to go for ideal Akka monitoring, instrumentation, and debugging facilities.

Evan a staff engineer leading the Compute and Data team at Ooyala, a leading provider of online video solutions. He has been the lead champion of Scala at Ooyala, helping the company to build distributed data pipelines based on Scala, Akka, Storm, Hadoop, Kafka, Spark, Cassandra, and other leading technologies. He loves participating in the Scala open source community and has created projects such as ScalaStorm, the Scala DSL for the Storm real-time processing framework.

Akka in Production: Our Story from Evan Chan

11:30 AM

Kelsey Gilmore-Innis

Journey to the Heart of the For-Yield

Options and IOs and Iteratees, oh my! If you've poked around at Scala you've seen it--the ubiquitous for-comprehension sprinkled through idiomatic Scala code. As it turns out, what looks like a bit of syntactic sugar to ease prosaic list manipulation is actually a super powerful structure for abstracting away all kinds of common operations in a safe and maintainable way. It allows you to take full advantage of type safety and pushes the work of setting up boilerplate to the compiler. We'll break down exactly what's going on in a for-comprehension and explore some of the wild and wonderful structures that can be used within one. You'll leave with a deeper understanding of the real-world benefits of functional programming. Or, to put it another way:

for {
  attendees <- thisTalk
  you <- attendees.collect { case attendee: You => attendee }
  yourFpKnowledge <- you.knowledgeOfFunctionalProgramming getOrElse beginner
} yield {
  expand(yourFpKnowledge)
}

Kelsey Innis strives to write Scala code with charisma, uniqueness, nerve and talent and hopes to one day really, truly, deeply understand what a monad is.

Journey to the Heart of the For-Yield from Kelsey Innis

12:10 PM

Lunch

We'll have catered lunch provided by Elephant's Delicatessen.

1:40 PM

Stephen Judkins

Functional Raster Image Processing in Scala

Most existing image processing libraries feature clumsy imperative interfaces to complicated mutable data structures. Here, we will show how raster graphics can be represented using simple functions and data structures and how a new library helps bridge the gap to real-world image formats. We'll see how operations on raster graphics can be made simpler, faster, more memory-efficient, and more composable compared to existing alternatives. We'll see both how common image processing tasks can be simple expressed, and examples of visually striking or fun effects that this framework makes easy.

Stephen is a Portland-based developer who has been using Scala professionally for several years.

Slides

2:25 PM

Tom Switzer

Spire by Example

This talk will introduce Spire by solving a fairly simple optimization problem. We'll first prototype a machine learning algorithm, using Spire's type classes and operators to create generic, concise and readable code. With this in hand, we'll then explore possible solutions to some real problems that arise in our data using some of Spire's data types, like real numbers, polynomials and random distributions. The goal is not to get into the nitty gritty details of Spire, but rather to showcase how Spire can be used to create nice, flexible numeric code.

Tom is a software engineer who has developed software in a wide range of areas, including computational geometry, bioinformatics, data analytics, and (most recently) recommendation systems. He enjoys developing software to solve fun problems. He is a Scala devotee and co-author of Spire (Scala numeric library).

Slides (PDF)

3:10 PM

Brendan McAdams

Network I/O for a More Civilized Age: The New Akka I/O

Until recently, users seeking a way of doing Scalable I/O had two choices: NIO, which provides an esoteric interface requiring serious expertise and concurrency control, or Netty - which provides a rich and powerful layer above NIO. The downsides to Netty however include an extremely idiomatic Java API, and a series of separated threads and thread pools left out of the control of the user.

There is, however, hope for the Scala user who abhors free range threading and wants a more Scala-sane interface to a network. Working with the Spray (http://spray.io), the Akka team (http://Akka.io | http://letitcrash.com ) has recently introduced a new, lightweight Non-blockimg network I/O interface built around Akka's core Actors.

This talk will explore the benefits and power of this new Akka I/O layer, including a brief exploration of its benefits over the "Old" Akka IO. The presenter will introduce the ByteString & it's powerful manipulation tools for network traffic, the Pipeline system for composed protocol decoding, and much more. Further insights will include a demonstration of Akka I/O's built in system for Backpressure — allowing true handling & awareness of an overloaded network buffer, and compositing of Futures on top of the Actor API to emulate a more functional interface.

A polyglot programmer, Brendan has made various contributions to Open Source in the past including building a Linux Driver for the Lego Mindstorms system — which now ships with the kernel. In his last role — at 10gen — he served as the MongoDB Scala evangelist, travelling the world to speak at conferences, as well as conduct professional consulting and training. Highlights included running MongoDB training in such exotic locales as Yerevan, Armenia. While at 10gen he also developed and maintained Casbah, the MongoDB driver for Scala, and a connector to integrate Hadoop + MongoDB. Brendan now works within the Professional Services team at Typesafe, helping Scala, Akka, and Play users better understand and deploy the Typesafe Stack.

3:50 PM

Break

4:20 PM

Charles Francis

The state of Scala as a platform for statistical computing

I first started using Scala in the context of a mostly Python project visualizing and building models of a pretty massive textual dataset. My first frustration with the language was accordingly how much work it was just to parse a CSV file (don't even get me started on memory usage back in 2.6...)! Then, of course, there was an absolute absence of any idiomatic Scala libraries for statistical and numerical processing---one was left to the terrible inconsistencies of Java's numeric types. Of course the situation has improved in recent years as evidenced by very high quality libraries meant to aid this type of workflow like Saddle, Spire, Breeze, and Scala Notebook. While Scala has experienced quite a lot of success as a language for doing Hadoop-style data processing, in this talk I want to focus instead on the current state of the language as a general statistical platform---less big data than analysts working with in-memory datasets for high-performance analytics and visualization. I will focus on how libraries like the ones mentioned above work together (or don't) and how Scala competes with the dominant languages in this space, R and Python. I intend to illustrate a simple analytics workflow using these tools, showing what works well, problems one will come up against, and indicate some fruitful lines for future work and unification.

Charles is a dedicated functional programmer with a focus on machine learning and visualization. He used to work at a Scala shop in Portland, ruminating on machine learning models to lower medical costs. He has worked on everything from clustering news articles with the Harvard Mediacloud project, to studying technological evolution through textual analytics of the US patent record, to designing and implementing algorithms for making computer generated proofs more aesthetically appealing to mathematicians in Standard ML. He is currently living in New York, taking a detour into the world of financial visualization with Pellucid Analytics.

Slides (PDF)

5:05 PM

Erik Osheim

Inlining anonymous functions with macros

The inlining problem (described by Cliff Click) is something that affects all functional languages on the JVM. The basic idea is that tight-loops dispatching to an anonymous function can defeat all of the JVMs optimization strategies. This creates a natural tension between writing the most concise code possible (DRY) and "manually inlining" boilerplate code for performance reasons.

Macros give us one possible tool to solve this problem. This talk describes a strategy where we can use anonymous function literals to generate implementations at compile-time. This strategy has the potential to give us terse, high-level source code that compiles to fast bytecode. In this talk, we'll see some early efforts, as well as challenges.

Erik is one of the primary authors of Spire, a library for fast, generic numeric programming in Scala. His day job involves hacking code and analyzing data for Meetup.com. His interests include experimental art and videogames, loud music, riding bikes, and playing with math.

Slides

5:50 PM

Sam Ritchie

Twitter: Taking Hadoop Realtime with Summingbird

Twitter's Summingbird library allows developers and data scientists to build massive streaming MapReduce pipelines without worrying about the usual mess of systems issues that come with realtime systems at scale. This talk will discuss the development of Summingbird's hybrid Batch and Realtime operating mode, the power of clean, mathematical abstractions and the massive creative leverage that functional design constraints can give to a project.

The talk will also discuss some of the applications for these technologies currently being used at Twitter.

Sam Ritchie is a senior software engineer in Twitter’s Infrastructure engineering group. He is co-author of a number of open-source Scala and Clojure libraries, including Summingbird, Bijection, Algebird, Storehaus and Cascalog 2, and a died-in-the-wool functional programmer. He holds a bachelor’s degree in mechanical and aerospace engineering.

Slides (PDF)

Sunday

The Game Plan

For Sunday, we'll be holding more ad hoc, unconference style sessions. If you haven't been to something like this before, the idea is that people make suggestions for topics they would like to help lead a discussion on and then as a group we choose which of these are of interest and divide them up amongst the various spaces we have available in the venue. These sessions can be anything from a birds-of-a-feather style focused discussion and sharing of war stories, to hacking sessions, to individual led topics with more audience participation than you would normally get in a typical conference setting.

If you want to lead a session, please try to prepare your ideas and any materials that might be needed ahead of time and be ready to submit a short description of the subject matter. For a birds-of-a-feather session, this could just be the area of interest that you want to meet with others to discuss. For a focused discussion, it should probably be more specific and detailed. For example, do you want to talk about use-cases, implementation, or possibly see some real code? For a hacking session, you should probably have some specific idea of the code you'd like to see hacked on. It's all up to you to suggest what you want to work on and the crowd will decide if it sounds interesting enough to indulge.

9:30 AM

Session Planning

This is when we'll collect the ideas and suggestions for the days activities. Please be here for this if you want to have a vote!

10:00 AM

Breakout Sessions

Based upon the interest level and number of submissions, we'll break this up into small units of time, as needed and use the various spaces we have available in the venue. There are minimum of three clearly distinct areas, but we can potentially segment it more depending on the size and nature of the sessions.

12:00 AM

Lunch

Once again, we'll have catered lunch provided by Elephant's Delicatessen.

1:30 PM

Breakout Sessions

Continuation of the morning activities

5:00 PM

Wrap-up

Tnat's it! Time to say our goodbyes and hopefully send everyone off enriched and full of ideas and new knowledge!