|Schedule Grid URL: https://goo.gl/ei5ijy|
|Capacity||100 seats||40+ seats||20 seats||20 seats||20 seats|
|9:30||Early morning category theory|
-- Rúnar Bjarnason (@runarorama)
Start the day off right with a refreshing refresher on categories, functors, monoids, monads, and maybe adjunctions and comonads.
|Scala+Data: round table about marrying data engineering and data science, getting Scala engineers into data, building data pipeines. What libraries are there? What is missing? Moderated by @chiefscientist. Erik promised to talk about Spire.||Scala, Interactively — @MasseGuillaume|
Scala Kata is an IDE as a service. Anyone with a web browser can get started in Scala immediately. In this session, I will showcase the project. We will then navigate the code to understand how it works. You will learn how to build your own compiler tool.
|Scala on a $9 computer - Maggie Leber (maybe 30 minutes max; intented to be a flash talk) IoT-ish @MaggieL|
|10:30||(happy to move this if somebody wants the room)|
Lightning talks (please join as presenters)
Show something cool. Raise awareness for a project you think is helpful.
maven_search - search for dependencies from the command line (by @cvogt)
play-json-extensions - quick feature overview: play-json support for sealed traits, case classes >22, case objects, etc. (by @cvogt)
Debugging with ammonite: Debug with a REPL, so you can explore your code in a more efficient and pleasant way (by @caente)
--- Rúnar Bjarnason (@runarorama)
We'll hack on an internet relay chat application written with Scalaz-Stream.
|The Case for the Cutting Edge|
If you're interested in using Scala and
want to talk to someone who has worked
for a company that made that transition
and talk about the organizational
hurtles involved and how that went,
this is the talk for you.
|Fun with Functional Interpreters|
Noel Welsh (@noelwelsh)
Many functional programming problems can be solved using the "interpreter pattern"... modelling your program structure as an algebraic data type and running it through an "interpreter" to produce useful output. This insight is behind a lot of advanced techniques such as the free monad.
In this session we have two goals:
- to show that this pattern is very simple and applies to basic Scala programming; and
- this can used for FUN, showing examples for drawing and music.
|Hazelcast workshop -- Nils KIlden-Pedersen (@nilskp)|
Hazelcast is a clustering and in-memory data library, making clustering very easy
I'd like to do a quick intro, and then dig into a workshop. Hopefully we can get a cluster up among our laptops and run some distributed aggregations on data.
Also, I have a few T-shirts to hand out
|11:30||Rapture — Jon Pretty (@propensive)|
Rapture’s goal is to provide useful libraries for everyday programming tasks, at the intersection between expressivity and typesafety, allowing you to write code which is both elegant and safe in Scala.
I will talk through a few of the modules in Rapture—JSON, I/O, HTML, CSV—explaining how each one uses Scala’s type system to provide better compile-time safety, without making any compromises on the readability of the syntax. After the talk, you should know enough to start using Rapture in your own projects, and to start taking advantage of the greater static guarantees it offers.
|INTRO to transducer collections. Basic, slow intro. Proof of concept collections powered by transducers. Learn more about commonly used functional pattern, and transducers and existential types. TAPAD is hiring! @markcanlasnyc||Shapeless Type Class Derivation for Mortals|
Dave Gurnell (@davegurnell)
One of the killer features in shapeless is its ability to automatically derive type class instances for families of sealed traits and case classes. This is the magic behind libraries like Circe and Doobie.
In this session we'll run through a couple of very simple examples of this feature, providing enough information for the adventurous to get started.
|title: Building a Reasonable Expression DSL with Kleisli|
presenter: Ryan Delucchi
Even for building a rather simple expression style DSL, which is at the very heart of many modern rule-based languages, it doesn't take long for the intrinsic complexity of language design to surface. In this talk, we will dig deep in the functional programmer's tool chest, and uncover a little known gem known as the Kleisli. We will explore how this deceptively simple piece of machinery in category theory can be used to build complex expression DSLs, with a completely modular library of operations and pluggable error handling. The code examples will be entirely Scala, with dependencies on the scalaz library. This presentation is geared towards those with an intermediate/advanced skill level in Scala and/or functional programming.
Noel Welsh - @noelwelsh
Probabilistic programming is relatively new approach to machine learning that is particularly relevant to functional programmers. Following my type level talk we'll go into more detail of the implementation of probabilistic programming in terms of the free monad, and how to perform Bayesian inference in these models.
|1:30||Configurable generic derivation in circe|
Travis Brown (@travisbrown)
This will be a short follow-up session to Dave's introduction to generic derivation that previews the configuration options coming to generic JSON codec derivation in circe.
Alan Johnson (@AlanJay1)
I'd be interested in talking about developing my first Akka project (most previous Scala experience was in full-stack Web), Atomic Store, which serves as the data store for an auction engine I'm working on. It uses Akka Persistent FSM, and is based on ideas from event sourcing and CQRS.
|CBT internals - how Chris' Build Tool works inside. The code is Scala beginner friendly and easy to change. CBT Bootstraps in a small number of phases from source.||Growing Scala Teams - I'd like lead a conversation around team, culture and development issues with growing from a small to large team (10s of Scala devs). Style guides, scalaz use it or lose it, which lib for xyz, Scala like a Haskell dev vs Scala like a Java dev, etc. Ben Darfler - @bdarfler|
|2:30||Scala.js: The Year in Review|
Mark Waks (Justin du Coeur), @jducoeur
|Fun, Games, Fix, Cofree, Doobie|
Rob Norris - @tpolecat
I'll walk through a concrete example using Fix, Cofree, and Doobie to map a recursive data type to a relational database, while preserving the natural representations on both sides (no database cruft in the Scala model, no oddness in the db schema).
Teaching monads is hard. Help me improve a talk I gave in August on how to learn to read and write monadic code workflows (multi-line for-comprehensions) intuitively. Starting with a simple non-technical definition of monads, my presentation breaks down the for-comprehension "code shape" of monads in an intuitive and easy to understand way. This intuitive code-shape is then connected to the underlying monad boilerplate with an explanation of the design of a custom monad. Finally, monadic workflows and examples of common monads are covered.
|Let's build an HList|
Cody Allen (GitHub: @ceedubs, twitter: @FouriersTrick)
Shapeless has a reputation for being magical, but for the most part it's just repeated use of a few concepts. We'll show that you could have written one of its core pieces (a heterogeneously-typed list). Depending on the crowd, we could keep it pretty simple or get really advanced. At a minimum we should be able to make (1 :: "foo" :: true :: HNil).filterNot[String] return an Int :: Boolean :: HNil.
|MicroKanren Implementation and Application:|
I'd like to share the details behind my implementation, discuss alternatives and future work, then perhaps try some sample problems and discuss potential applications.
|Hacking on type-level content types / content negotation for Finch |
In the Finch project we're planning to add a content type type parameter to our codec type classes in order to support type-driven resolution of decoders and serializers for different content types.
This hack session will focus on wrapping up some issues in the current implementation (https://github.com/finagle/finch/pull/541) and on trying to find ways to extend the approach to support content negotiation.
|Interested in contributing to CBT? This session is for you.|
- How to version CBT for reproducible builds? Discussion how to solve this. (with Rob Norris (@tpolecat), Doug Tangren (@softprops) and Chris Vogt (@cvogt).
|4:30||Living with SI-2712 (Daniel Spiewak)|
Almost any piece of non-trivial type-level hackery is going to run into the infamous SI-2712, a bug so well-known it has its own memes. Come and learn what it is, how to recognize it, and a grab-bag of tools for working around the the issue.
|Matryoshka (recursion schemes) – Greg Pfeil (@sellout)|
This is all about how to separate recursion from your operations, and why you might want to do that. From Wednesday’s “nanopass compiler” talk. Nothing structured, but happy to discuss the concepts, help people get started with the library, go over anything from Wednesday’s talk, etc. https://github.com/sellout/matryoshka/tree/docs
|5:30||Drink-up. Landmark Americana, 3333 Market St. @ 34th st.|