Loading…

Sign up or log in to bookmark your favorites and sync them to your phone or calendar.

Functional [clear filter]
Thursday, November 16
 

9:00am PST

Disorder & Tolerance in Distributed Systems at Scale

Re-framing problems changes how we see and solve them. The intersection of scientific thought and principles parallels much of what we solve as engineers of information (e.g. uncertainty, time, distribution) and need. This talk is an interdisciplinary look at complex adaptive systems and how they innately solve things like resource distribution, growth and rebalancing. From the context of intelligence and systems, this talk will look at ideas around entropy and time, ensemble forecasting, self-organization theory, the butterfly effect, virus-human co-evolution and adaption, natural feedback loops, self-balancing, and adaptation.

  • Can we leverage these principles, behaviors and strategies to design intelligent systems at scale?
  • Can seeing things in an interdisciplinary way benefit solving common problems and speed innovation?

 

 


Speakers
avatar for Helena Edelson

Helena Edelson

CEO, The Axis Initiative
Helena is using AI and complex adaptive systems to study and help endangered species under climate change, biodiversity loss, human-wildlife conflict and illegal wildlife trade. Bridging academia and industry, she is a member of the Environmental Intelligence team of the Interagency... Read More →


Thursday November 16, 2017 9:00am - 9:50am PST
Functional

9:50am PST

Cloud Science
Cloud Science
At GRAIL, our mission is to detect cancer early, when it can be cured. Our approach is data intensive: we sequence cell-free DNA in blood in order to detect minuscule evidence of tumors.
In order to support our myriad workloads—among them ad-hoc analyses, model training, and complicated bioinformatics pipelines—we built Reflow, a system and language for scientific computing in the cloud. Reflow’s data processing engine is fully incremental, and focuses on efficiency, reproducibility, and ease-of-use.
With Reflow, scientists and engineers write ordinary programs that compose existing tools; these programs are then transparently parallelized, memoized, and distributed across many workers using your favorite cloud computing provider. Reflow is vertically integrated: a single binary evaluates the program and is also responsible for elastic cluster management and execution coordination — this makes Reflow very simple to deploy, operate, and retarget to different cloud providers.
I’ll describe how Reflow’s language semantics and runtime are co-designed to yield a simple, robust implementation. I’ll also talk about how Reflow is used for data intensive scientific computing at GRAIL, primarily to analyze next generation sequencing (NGS) data sets.

Speakers
avatar for Marius Eriksen

Marius Eriksen

infrastructure-infrastructure engineer, Grail
Marius is the author of such ideas as Finagle, Zipkin, Your Server is a Function, and many others.


Thursday November 16, 2017 9:50am - 10:30am PST
Functional

10:40am PST

Scala for the Rest of Us
Scala can be a difficult language to get into, especially for people coming from a OO Java background. Thinking functionally doesn't come naturally to people who haven't worked in it, and a lot of the concepts and patterns are foreign and often heavily abstract. Just getting started can seem like an overwhelming effort. This talk discusses the barrier to entry in moving from OO Java to Scala and what we can do to lower that barrier. I will review the Scala Pet Store and its motivation as a means to help those new to Scala understand what a complete application looks like.

Speakers
avatar for Paul Cleary

Paul Cleary

Senior Principal Engineer, Comcast
20+ years of software development experience, spent most of the last 5 years in Scala. Most of my career is building OO systems, recently converted to FP. After all this time I am still learning. Talk to me if you are struggling with Scala or Functional Programming or if you are... Read More →


Thursday November 16, 2017 10:40am - 11:00am PST
Functional

11:10am PST

Type Classes for the Rest of Us
Scala as an Object-Functional language has an almost endless supply of options to tackle the day-to-day problems that we run into as developers. However, it's often not clear when to choose one option over another. Type-classes provide a simple solution to several problem spaces -- often filling the gaps that other traditional solutions fail to fill.

In my talk, I will iterate over a real-world problem using common tools made available by Scala to help gain some intuition about how type-classes work and why they are useful. Most importantly, since type-classes can be used to completely replace entire features of the Scala language, I give some concrete examples of pragmatic use-cases to show some insight into where and when to apply type-classes to day-to-day problems. Attendees will leave having a good intuition about when and where to apply type-classes to a problem - and even more importantly when *not* to apply it.

Speakers
avatar for Andrew Kuhnhausen

Andrew Kuhnhausen

Software Engineer, Domino Data Lab
Andrew Kuhnhausen is a developer at Domino Data LAb in San Francisco. He did his thesis on static analysis of Dalvik byte code for malware detection. When not futzing around with functional programming or distributed computing, you can find him riding his bike and enjoying the fine... Read More →


Thursday November 16, 2017 11:10am - 11:30am PST
Functional

11:40am PST

The Design of the Scalaz 8 Effect System

Purely functional Scala code needs something like Haskell's IO monad—a construct that allows functional programs to interact with external, effectful systems in a referentially transparent way. To date, most effect systems for Scala have fallen into one of two categories: pure, but slow or inexpressive; or fast and expressive, but impure and unprincipled. In this talk, John A. De Goes, the architect of Scalaz 8’s new effect system, introduces a novel solution that’s up to 100x faster than Future and Cats Effect, in a principled, modular design that ships with all the powerful primitives necessary for building complex, real-world, high-performance, concurrent functional programs.

Thanks to built-in concurrency, high performance, lawful semantics, and rich expressivity, Scalaz 8's effect system may just be the effect system to attract the mainstream Scala developers who aren't familiar with functional programming.


Speakers
avatar for John A. De Goes

John A. De Goes

Solution Architect, De Goes Consulting
John A. De Goes has been writing Scala software for more than eight years at multiple companies, and has assembled world-renowned Scala engineering teams, trained new developers in Scala, and developed several successful open source Scala projects.Known for his ability to take very... Read More →


Thursday November 16, 2017 11:40am - 12:20pm PST
Functional

1:10pm PST

Teaching Scala to the statically challenged
Most developers at SBTB came to Scala already knowing at least one statically typed language. There is an ever-expanding pool of potential Scala learners who know only Python, JavaScript and/or Ruby, but they are too-often stymied by “introductory” resources that assume familiarity with Java or C. We must decouple Scala scholarship from legacy languages in order to benefit from this diverse pool of talented, enthusiastic, and impressionable developers.

This talk is for experienced Scala coders who care about growing and diversifying our community. We will cover general guidelines for being a great teammate/mentor without committing too much of your own time, as well as specific language features to emphasize or avoid with beginners.

Speakers
avatar for Rebecca Ely

Rebecca Ely

Spark Platform Engineer, Bloomberg
Software Engineer at Bloomberg


Thursday November 16, 2017 1:10pm - 1:30pm PST
Functional

1:40pm PST

Inventory History as Pure Functions
As a proudly data-driven company dealing with physical goods, Stitch Fix has put lots of effort into inventory management. Tracer, the inventory history service, is a new project we have been building to enable more fine-grained analytics by providing precise inventory state at any given point of time. I will talk about how we design this "time machine" with functional programming principles to help us reason about stateful data, and how we implement it in Spark using Scala for the core and Python for the end-user APIs. This project also gives us a chance to explore a new way to build complex ETL pipelines; by chaining testable and composable transforming functions as a data flow.

Speakers
avatar for Sky Yin

Sky Yin

Data Scientist, Stitch Fix
Data paranoid, failed entrepreneur, former stock trader, Canadian in the US, Shanghainese. A husband and a father of a daughter. Currently working on data science and engineering in the world of fashion.


Thursday November 16, 2017 1:40pm - 2:00pm PST
Functional

2:10pm PST

The Functor, Applicative, Monad talk
Functors, applicatives, and monads are fundamental tools for some programmers, yet for many others they are considered immaterial. Indeed there are extremely few languages which offer support for even talking about these concepts. Why then are these programmers so fixated on them? What about them makes them so desirable and necessary? In this talk we will explore the what and why of these concepts and hopefully leave you understanding, if not convinced of, their utility.

Speakers
avatar for Adelbert Chang

Adelbert Chang

Lead Data Engineer, Target
Adelbert Chang is a Lead Data Engineer at Target where he works on infrastructure systems for the Data Science and Optimization team. Previously he worked at U.C. Santa Barbara doing research in large-scale graph querying and modeling, and in industry on machine learning systems... Read More →


Thursday November 16, 2017 2:10pm - 2:50pm PST
Functional

3:00pm PST

Scala Meta Live Coding Session
In this talk, we will have an interactive live coding session where we will use Scala Meta to code something useful (a code generator for your REST API). Hopefully this will embolden other Scala users to explore macros for profit and fun without fear.

Speakers
avatar for Pathikrit Bhowmick

Pathikrit Bhowmick

Head of Engineering, Coatue Management
Pathikrit writes Scala full-time at a hedge fund. He is also the author of many widely used Scala libraries: https://github.com/pathikrit such as better-files and metarest and is a committee member of the Scala Platform.


Thursday November 16, 2017 3:00pm - 3:40pm PST
Functional

4:00pm PST

How to Elm-ify Your ML
Functional Reactive Programming for Feature Engineering in Machine Learning

I will discuss the system we built at Stripe to enable modelers to quickly define complex features and have them for training and also in realtime for scoring.

Speakers
avatar for Oscar Boykin

Oscar Boykin

Machine Learning Infrastructure, Stripe
Oscar is the creating of Scalding, Summingbird, and Algebird, and is an overall professor and mathematician turned software magician.


Thursday November 16, 2017 4:00pm - 4:40pm PST
Functional
 
Friday, November 17
 

9:00am PST

Composable Parallel Processing in Apache Spark and Weld
The main reason people are productive writing software is composability: engineers can take libraries and functions written by other developers and easily combine them into a program. However, composability has taken a back seat in early parallel processing APIs. For example, composing MapReduce jobs required writing the output of every job to a file, which was both error-prone and slow. Apache Spark helped simplify cluster programming largely because it enabled efficient composition of parallel functions, leading to a large standard library and high-level APIs in various languages. In this talk, I'll explain how composability has evolved in Spark's newer APIs, and I’ll present Weld, a new research project I'm leading at Stanford to enable much richer composition of software on emerging parallel hardware (multicores, GPUs, etc). Systems like Weld and Spark will allow engineers to focus on building their application rather than the intricacies of parallel hardware, and might represent one of the best ways we have to tame the ever-diversifying hardware landscape.

Speakers
avatar for Matei Zaharia

Matei Zaharia

Chief Technologist, Databricks
Matei Zaharia is an Assistant Professor of Computer Science at Stanford and Co-founder and Chief Technologist at Databricks. He started the Apache Spark project during his PhD at UC Berkeley, and has worked on other widely used open source data analytics and AI software including... Read More →


Friday November 17, 2017 9:00am - 9:40am PST
Functional

9:50am PST

Adjunctions in Everyday Life
This talk introduces adjunctions, a category theory concept underlying and unifying monads, products, coproducts, algebraic data types, and folds. All monads have adjoint functors underlying them, as do products, coproducts, algebraic data types, and folds. We'll see that adjoint functors really do arise everywhere. Adjunctions are really about finding efficient solutions, which is something close to the hearts of software developers. When we ask either "what is the most efficient solution to this problem?" or "what is the most general problem that this solves?" we are really looking for an adjunction. The talk will give a crash course on categories and functors, followed by lots of examples of adjunctions, a particular kind of relationship between functors that arises virtually everywhere. Then we'll discuss some practical implications. The idea of adjunctions gives us an abstract and precise concept we can leverage when designing and using libraries.

Speakers
avatar for Rúnar Bjarnason

Rúnar Bjarnason

Cofounder, Unison
My name is Rúnar. I’m a software engineer in Boston, an author of a book, Functional Programming in Scala, and cofounder of Unison Computing. We're making a distributed programming language called Unison.Talk to me about functional programming, relational database theory, compilers... Read More →


Friday November 17, 2017 9:50am - 10:30am PST
Functional

10:40am PST

Adaptive Scrooge - Adaptive Thrift Decoding
Deserialization of thrift blobs is an important cost for our realtime data processing jobs. Many of the jobs read only a small subset of the fields but pay the price of deserializing the entire payload. We can reduce this cost with AdaptiveScrooge in both cpu and memory efficiency. The basic idea of AdaptiveScrooge is that we should pay less price for deserializing data that we don’t use. AdaptiveScrooge relies on the fact that we can simply find out which fields are getting accessed by sampling a few events. Based on this we modify the parsing logic to cheaply skip un-accessed fields and thus reduce cpu cost. By not creating objects for the skipped portions we also reduce GC pressure. For workflows where a very small portion of the entire event is accessed this is an order of magnitude cheaper.

Speakers
avatar for Pankaj Gupta

Pankaj Gupta

Engineering Manager, Twitter


Friday November 17, 2017 10:40am - 11:00am PST
Functional

11:10am PST

Auto code generation using AI & Scala Macros
Ever wondered you need an AI to automatically write programs for you given some requirements. Given the awesome Scala Macros, this is totally possible. In this talk, we will discuss using Scala Macros, how to convert Natural Language requirements to Scala programs. Will do a live demo at the end

Speakers
avatar for Rahul Chitturi

Rahul Chitturi

Principal Software Engineer, Coatue


Friday November 17, 2017 11:10am - 11:30am PST
Functional

11:40am PST

Functional Programming with Effects
Effects are good, but side-effects are bad. Well, ok. What's the difference? What do we mean when we talk about effects, and what are the rules of the game? In this beginner/intermediate talk we will talk about some familiar effects like `Option` and `List`, build up some more interesting effects of our own, and talk about how to think about programs as "computations" that are values we can manipulate like any other kind of data. Along the way we will do some equational reasoning and talk about applicative and traversable functors, monads, and other intimidating words.

Speakers
avatar for Rob Norris

Rob Norris

Programmer, Gemini Observatory
Software Engineer


Friday November 17, 2017 11:40am - 12:20pm PST
Functional

1:10pm PST

Scala 2.13
... and beyond! Join me for the latest on our progress towards Scala 2.13.0, which will bring you a faster compiler, a nicer REPL and a completely reworked collections library. Actually, we couldn't wait to deliver the faster compiler, so all improvements that we felt could safely land in the 2.12 series are available there! 2.13.0-RC1 is scheduled for April 2018, so there's still time to share your feedback on the collections rework, or request a few last-minute improvements for the REPL, before we go into feature freeze with 2.13.0-M4 (end of January).

Speakers
avatar for Adriaan Moors

Adriaan Moors

Scala Team Lead, Lightbend, Inc
Scala Team Lead, Lightbend


Friday November 17, 2017 1:10pm - 1:50pm PST
Functional

2:10pm PST

Defusing the configuration time bomb with PureConfig and Refined
Hiding inside your configuration files are latent errors waiting to take down your app in a series of cascading failures. Let’s take a look at the academic paper which made that claim and the authors’ suggestion for how to avoid those problems. Then we'll look at how we can use PureConfig and Refined to automate those safer practices.

Speakers
avatar for Leif Wickland

Leif Wickland

Software, Rubicon Project
In one of his first jobs, Leif wrote software for livestock auction yards. His boss also owned the town newspaper. When the only reporter fell ill, Leif played journalist for a couple days. He published pieces he's glad don't appear online. His second most noteworthy accomplishment... Read More →


Friday November 17, 2017 2:10pm - 2:50pm PST
Functional

3:00pm PST

FS2 Internals: Performance
Functional Streams for Scala 0.10 was recently released, featuring a streamlined API, major performance improvements, and first-class Cats integration. In this talk, we’ll explore the techniques used to make FS2 0.10 fast, including a unified stream algebra and partial evaluation via staged computation.

Speakers
avatar for Michael Pilquist

Michael Pilquist

Distinguished Engineer, Comcast
Michael Pilquist is the author of Scodec, a suite of open source Scala libraries for working with binary data, and Simulacrum, a library that simplifies working with type classes. He is a committer/maintainer on a number of other projects in the Scala ecosystem, including Cats and... Read More →


Friday November 17, 2017 3:00pm - 3:40pm PST
Functional

4:00pm PST

Functional Linear Algebra in Scala
It is curious that a bunch of Linear Algebra implementations are written as if it is Fortran all the way down. We can do better, and a functional implementation, with less mutability and more abstractions, may save efforts, space, and processor time. I will show pieces of easy-to-read code that works with vectors and matrices in a functional way. As an example, an efficient and practical implementation of PCA.

Speakers
avatar for Vlad

Vlad

contributor, Patryshev
Software developer with an experience in categories and toposes.Teaching logic and formal methods at Santa Clara University.Working as a data engineer at Salesforce.


Friday November 17, 2017 4:00pm - 4:40pm PST
Functional

6:30pm PST

Entertainment
An awesome chance to catch an amazing Accordion performance!

Friday November 17, 2017 6:30pm - 7:00pm PST
Functional

7:00pm PST

Fireside Chat with Evan Weaver and Boaz Avital: Storage, Then and Now
In this fireside chat, Evan Weaver, the original storage lead at Twitter and cofounder of FaunaDB based on his experience there, talks with Boaz Avital, the current head of Twitter storage team, about their systems, then and now.

Moderators
avatar for Alexy Khrabrov

Alexy Khrabrov

Program Chair, Reactive Summit

Speakers
avatar for Boaz Avital

Boaz Avital

Tech Lead of Storage at Twitter, Twitter
Head of Storage Systems, Twitter
avatar for Evan Weaver

Evan Weaver

CEO, Fauna
Evan is cofounder and CEO of Fauna, makers of FaunaDB, the first adaptive operational database. FaunaDB was inspired by Evan's experience leading the team that scaled Twitter, where he was Director of Infrastructure and employee #15.


Friday November 17, 2017 7:00pm - 7:30pm PST
Functional
 
Saturday, November 18
 

9:00am PST

Apache Flink and the Next Wave of Stream Processing Applications
Over the last years, data stream processing has redefined how many of us build data pipelines. Apache Flink is one of the systems at the forefront of that development: With its versatile APIs (event-time streaming, Stream SQL, events/state) and powerful execution model, Flink has been part of re-defining what stream processing can do. By now, Apache Flink powers some of the largest data stream processing pipelines in open source data stream processing.
Recently, stream processing has started to also turn the space of event-driven applications inside out: We see more and more developers building applications and microservices directly on data streams, making use of sophisticated stream processors as the foundation and blurring the boundary between streaming analytics and applications.
We will discuss the key concepts behind Apache Flink's approach to stream processing and how it is a powerful abstraction for stateful event-driven applications. We will present how the Flink community sees that next wave of streaming applications change some of the core principles of how we build applications today.

Speakers
avatar for Stephan Ewen

Stephan Ewen

Stephan Ewen is PMC member and one of the original creators of Apache Flink, and co-founder and CTO of data Artisans.He holds a Ph.D. from the Berlin University of Technology.


Saturday November 18, 2017 9:00am - 9:40am PST
Functional

9:50am PST

Functional Patterns and Gems in Scala
Scala has evolved from being "a more concise, more strongly typed, Java" to being a deeply powerful language, capable of utilizing instruments of purely functional programming, with the help of richly featureful Open Source libraries. A random walk through one of the open-source projects by new-comers to the Scala language or those with a theoretical background in Category Theory alike is sure to be met with both astonishment and confusion. In this talk we will delve into some FP patterns and little known gems that are available to both simplify and enrich our lives as we go about our day-to-day routine of building software.

Speakers
avatar for Ryan Delucchi

Ryan Delucchi

Principal Engineer, Infrastructure, Verizon Labs
Specializes in building scalable web services and application back-ends using composeable streaming, computation, algebraic data-types and pure functional programming.


Saturday November 18, 2017 9:50am - 10:30am PST
Functional

10:40am PST

Index your State for Safer Functional APIs
What if there was a way to enforce the order of how people can call into your API? Most folks are familiar or have at least heard of the State monad, but here I wills how how an IndexedState is even more powerful and lets you craft APIs with even more compile time safety and constraints.

Speakers
avatar for Vincent Marquez

Vincent Marquez

Lead Software Engineer, YTel


Saturday November 18, 2017 10:40am - 11:00am PST
Functional

11:10am PST

Playing with Shapeless
Play-Formless is a small library for Play Framework that automatically generates type-safe Form Mappings for case classes. We use Shapeless’s LabelledGeneric representation to abstract over the structure of a case class; and Shapeless record types to specify mappings in a type-checked way. Some additional features such as type-driven default field mappings, the use of refinement types, and type-safe named parameters will be demonstrated. More broadly, we want to show how Shapeless can be a practical tool in real-world applications.

Speakers
avatar for Thomas Kim

Thomas Kim

Principal Engineer, Iterable
Tom is a senior engineer at Iterable where he focuses on data engineering with Elasticsearch. He's a long-time Scala and FP enthusiast. He was previously at Workday and Salesforce. He's lived in San Francisco since 2001. Being a bandwagon Warriors fan makes his wife laugh.
avatar for Charles Ruhland

Charles Ruhland

Software Engineer, Iterable
Charles is a software engineer at Iterable, focusing on scaling their backend architecture with Elasticsearch, RabbitMQ, and Postgres. Previously he worked at Mesosphere on Cosmos, the open-source package management API for DC/OS. He became hooked on functional programming while getting... Read More →



Saturday November 18, 2017 11:10am - 11:30am PST
Functional

11:40am PST

Declarative concurrent programming with Chymyst
Chymyst is a new open-source framework for industry-strength declarative concurrent programming in Scala. Chymyst implements the Abstract Chemical Machine (a.k.a. Join Calculus) concurrency paradigm, which radically improves upon the well-known Actor model by making actors type-safe, stateless, and automatically managed. I show concise and fully declarative Chymyst solutions for classic concurrency problems such as the "dining philosophers" or recursive "fork/join". Chymyst is in active development; next steps on the roadmap include providing comprehensive industry-friendly features such as APIs for unit testing, performance monitoring, and fault tolerance.

Speakers
avatar for Sergei Winitzki

Sergei Winitzki

Senior Software Engineer, Workday Inc.
Theoretical physicist turned software engineer, passionate for functional programming, functional type theory, and declarative domain-specific languages.


Saturday November 18, 2017 11:40am - 12:20pm PST
Functional

1:10pm PST

Error Handling Without Throwing Exceptions
In a microservice environment, it is painful to handle exceptions thrown by external services. We designed a mechanism for type-safe error handling using EitherT monad transformer to stack Future and Either. Calls to external services are implemented in a stack of EitherT for fail-fast error handling. Errors are separated for each logical external services. Error hierarchy is defined to expose different layers of the system. Location and reason of an error are provided for debugging. In addition, we validated input to each call of external service by Validated to accumulate errors. Validation rules are tested by property-based testing with ScalaCheck. We implemented both fail-fast and accumulated error handling with Cats in payment service for shopbot.

Speakers
avatar for Haeley Yao

Haeley Yao

Software Engineer, eBay
Haeley is a software engineer at eBay who works on building human assistant shopping bot and a shopping app targeted at Chinese customers, using Scala, Cats and microservice-based architecture. Haeley is interested in applying pure FP in large enterprise applications.


Saturday November 18, 2017 1:10pm - 1:30pm PST
Functional

1:40pm PST

Fixing the rusty core of the internet with functional programming.
The security of the internet is based on crusty old libraries with poor test coverage and code which cannot be reasoned about. Types bring more safety to our code and functional programming allows us to translate equations directly, so why are domains which are critical to the safety of the internet not using either? The idea that old code is secure because it's been around for awhile is not true and everyday new vulnerabilities are found. Cryptography, for example, is just math, which is easily translated using functional programming techniques. Using these techniques we can make the code easier to read, to test and prove, safer to use, and easier to debug. In this talk we'll dive into some best practices for providing maximal safety and show some of the common cryptographic primitives written this way. We'll discuss why it makes so much sense to rewrite critical pieces of Internet infrastructure using these techniques. Finally we'll talk about tradeoffs in speed, security and readability.

Speakers
avatar for Colt Frederickson

Colt Frederickson

Chief Types Officer, IronCore Labs


Saturday November 18, 2017 1:40pm - 2:00pm PST
Functional

2:10pm PST

Analyzing Functional Programs
Techniques like the Free Monad and Tagless Final allow us to build algebras that abstract Monad choices from our business logic. This abstraction allows unit tests to be run in a simple synchronous Monad while production code can still take advantage of complex asynchronous Monads. What else can we do with this abstracted business logic? In this talk, I'll explore the use of the Gen Monad from Scalacheck to produce random walks over our business logic consisting of the steps taken in our abstract algebras.

Speakers
avatar for David Cleaver

David Cleaver

Senior Principal Engineer, Comcast
Dave Cleaver is a Senior Principal Engineer at Comcast designing and implementing scalable Web Services and Platforms. He has spent the last two years developing and championing solutions in Scala. His interests include AI planning, distributed systems, programming languages, and... Read More →


Saturday November 18, 2017 2:10pm - 2:50pm PST
Functional

3:00pm PST

Building a Tagless Final DSL for WebGL in Scala
In functional programming we very often find ourselves wanting to use some kind of library that doesn’t really expose a functional API. That’s where embedded domain specific languages come to the rescue. Embedded Domain Specific Languages or eDSLs allow us to build a data structure that represents the expressions of the target language. In this talk we’re going to discover the tagless final approach for building DSLs. We will also compare other styles of DSLs like ADTs and Free Monads and have a look at the respective trade-offs. Finally we will build the purely functional DSL for WebGL using Scala.js and create a small, but awesome 3d app in the browser.

Speakers
avatar for Luka Jacobowitz

Luka Jacobowitz

Software Engineer, codecentric AG


Saturday November 18, 2017 3:00pm - 3:40pm PST
Functional

4:00pm PST

The Futures are Calling and I Must Choose
Scala has a Future type in the standard library, but when we use other libraries we have competing abstractions: Scala Futures, Twitter Futures, Java CompletableFutures, Guava ListenableFutures. Other libraries like Scalaz, Monix, and FS2 bring us Task abstractions, which are similar to Futures but lazily executed. How do all these variants relate to one another? When should we use one over another? How do we interoperate when we have to deal with code that uses a different variant? Starting from the basics of Scala Futures, we'll build up an understanding of how to select the best one for a codebase, how to make them work together, and some of the pitfalls. Along the way we'll even see some other tricks for making these useful abstractions when combined with other effects.

Speakers
avatar for Chris Phelps

Chris Phelps

Principal Software Engineer, Splunk
I've been coding in Java since the early days of the language, and in Scala for the last 4 years. My main areas of focus are in microservices and reactive approaches. As our organization is a polyglot development environment, I'd also love to talk to you about adopting and evangelizing... Read More →


Saturday November 18, 2017 4:00pm - 4:40pm PST
Functional