Join us at Scala eXchange 2017 on December 14-15th

Join Scala eXchange 2017, the go-to conference to discover and learn all the latest developments in the Scala world.
Thank you for making Scala eXchange 2016 such an amazing conference! We hope you've enjoyed it as much as we did! Find below some more information, and stay in the loop!
Last year's highlights included keynotes from Martin Odersky, Heather Miller, Erik Osheim, Adrian Moors, and some of the topics explored were shapeless, machine learning, typelevel, streams, spark, JSONPath, Cassandra, and more!
ScalaX London Party - Thursday 14th December

Did you enjoy the first day of Scala eXchange? It's party time now! Visit the Skills Matter booth during ScalaX for a Party Ticket (tickets are limited to 400 only - so grab one while they last!) to enjoy some drinks at Codenode's {{SpaceBar}}, dance to some cool music, share your experience and impressions of ScalaX with other ScalaX attendees.
We will have our very own ScalaX double decker routemaster buses bringing you from the BDC (Business Design Centre, 52 Upper Street) to CodeNode. Buses will be ready outside the BDC once the conference ends on Thursday 14th December (straight after the last session at 6pm) to bring you to CodeNode!
If you prefer the good old London Underground, CodeNode is a five-minute walk from Moorgate Tube Station, which is just two stops from Angel (the closest station to the BDC, where Scala eXchange takes place), and it's served by the Northern Line.
Come along from the conference or meet us at CodeNode for an evening of good tunes and drinks – a chance to share your experience and ideas with each other in a relaxed and fun atmosphere! And it doesn't end here: this year's party is going to be more awesome than ever, we'll have a DJ with live music and visuals, retro arcade games (do you remember PacMan and Space Invaders?), a Popcorn Machine and a Photo Booth to save your memories of the night. We look forward to having you with us! And if you need some help finding your way home/to your hotel once the party's over, please visit the Transport for London's website which contains full information on how to move around in London.

Tickets
Registration is open and we have some great Early Bird offers available so if you are planning to join us for two days packed with scala fun, get your skates on and book your ticket today!
ScalaX Day 3 - ScalaX2gether Community Day - Sat 16 Dec

The ScalaX2gether Community Day will follow 2 power packed days at Scala eXchange on Saturday 16th December at Skills Matter's home, CodeNode.
ScalaX2gether is a friendly place where you can get involved in Scala open source. Come along to meet new people, learn new things, and contribute to your favourite Scala projects!
It doesn't matter whether you've been coding Scala for three months or three years---there will be something for everyone.
The event will be a single day in an unconference/hack day format. The full set of sessions and topics will be decided on the day, so bring your ideas and enthusiasm with you!
We've had some specific session proposals for the day. These will be available as options when we collaboratively decide on the programme:
Greg Dorrell - Fullstack Scala with Play and Scala.js
Raul Raja Martinez - Building Purely Functional Microservices
Paulo Siqueira - Learning Scala with Minecraft Mods
Heiko Seeberger - Whirlwind Tour of Akka Typed
Travis Brown - A Tour of Typelevel by way of Circe
More TBC soon!
Participation is free for registered attendees. Head here to register!
Code of Conduct
Please find our Code of Conduct here.
ScalaX Diversity Scholarship Plan

Skills Matter is proud and happy to share our Scala eXchange 2017 Diversity Scholarship Plan. This plan is based on our commitment to help develop the skills of women and their participation in our community. It is aimed at helping women who want to enter/ re-enter the tech industry.
Find more information here!
Impressions of last year
Excited? Share it!
Day 1: Thursday 14th December
Join us for these super sessions!
Track | Room 1 | Room 2 | Room 3 | Room 4 | ||||||||||||
08:15
Invalid Time
Invalid Time
|
Registration & Breakfast Refreshments |
|||||||||||||||
09:15
Invalid Time
Invalid Time
|
KEYNOTE
About the speaker...Dave GurnellIn his spare time he enjoys making maps, playing with cats, and taking short trips in his space ship. |
|||||||||||||||
09:30
Invalid Time
Invalid Time
|
KEYNOTE
scalax
scala
category-theory
constructive-logic
type-system
types
mathematics
maths
math
bigdata
About the speaker... |
|||||||||||||||
10:30
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
10:45
Invalid Time
Invalid Time
|
There are (at least) two ways to solve the problem, which are quite popular: free monads and the tagless final encoding. Both are equivalent in expressive power, but are radically different when it comes to code. In this live-coding talk, you will learn how to transform a simple application which relies on
scala
functional-programming
free-monads
tagless
monads
About the speaker...Adam WarskiApart from writing closed- and open-source software, Adam is interested in improving the way we use functional and object-oriented programming. He is also writing a technical blog on a variety of interesting IT-related subjects. You can follow Adam on Twitter here, or take a look at SoftwareMill. |
Akka is a toolkit for building highly concurrent and distributed applications on the JVM using the actor model. Given the prevalence of frameworks over toolkits and models in the industry, it is easy to forget that the former will not prevent you from using them in any way you please – including ways that are possibly suboptimal or perhaps even harmful. In this talk you'll learn about a few of the most common anti-patterns related to Akka usage. You'll also discover alternative and more appropriate solutions to use for each one of those anti-patterns. It should be noted that these suboptimal uses of Akka are not merely theoretical ponderings but real and recurring observations that the speaker made during a range.
scala
akka
concurrency
distributed-systems
About the speaker...Manuel BernhardtManuel likes to travel and is a frequent speaker at international conferences. He lives in Vienna where he is a co-organizer of the Scala Vienna User Group. Next to thinking, talking about and fiddling with computers he likes to spend time with his family, run, scuba-dive and read. You can find out more about Manuel's recent work here. |
Do you throw away static types and go dynamic? Of course not! You have to change the level of abstraction in our code. In this session you will explore this process, working through a real-life example of switching from domain-specific static types to a composable data description language. How do you keep your code boilerplate-free? How do you maintain correctness? And how do you write expressions that operate on data for which you don't have simple static types? Come along for answers to these questions and more.
scala
types
About the speaker...Dave GurnellIn his spare time he enjoys making maps, playing with cats, and taking short trips in his space ship. |
|
||||||||||||
11:30
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
11:45
Invalid Time
Invalid Time
|
|
In this talk, you will explore a real world use case combining typeclasses, literal types, shapeless and scala.meta to program the type-system to understand and validate simple SQL queries.The resulting solution will ensure they match a given schema without requiring a database connection!! The code examples are based on Troy, an open-source Cassandra driver which allows developers to paste raw queries within Scala code in a way such that they get compile time schema validation and derivation of case-class marshallers for free. The talk targets established Scala developers who would like to know more about advanced Scala features and libraries. You will learn how to program the type system, use HLists, and augment all of that using a pinch of scala.meta on the top! Have a sneak peek at the code examples here.
scala
typelevel
typeclass
hilst
induction
About the speaker...Tamer AbdulRadiCheck Tamer's posts at abdulradi.com. |
During this talk, you will explore the general principles of Category Theory in a pragmatic, non-mathematical way. You will discover practical examples of how this theory has managed to simplify and solve common challenges that we encounter in our code daily, such as nullable values, error handling, parallel and sequential operations and data validation. Also, you will learn how to apply them to create our own category theory library from scratch with scalacheck as the only dependency. |
|
||||||||||||
12:30
Invalid Time
Invalid Time
|
Lunch Break |
|||||||||||||||
14:00
Invalid Time
Invalid Time
|
KEYNOTE
Functional programming in a statically typed language provides a great substrate for evolution of compositional domain models. The typesystem allows you to define your domain model as an algebra comprising of domain entities as algebraic data types, domain behaviors as functions and domain rules as the laws of the abstractions. You will learn how to approach domain API design through the algebra of types that not only make the APIs statically verifiable but also employ techniques to encode quite a bit of domain logic as part of the API itself. You will discover Scala as the implementation language, though the techniques discussed will be equally applicable for any functional language with a powerful type system. During this talk, you will explore the various dimensions of the model evolution starting from inception of the APIs, going through the lifecycles of composition and refinement of the APIs and finally making them resilient through exception handling and effect tracking. Here are some of the design techniques that you will discover:
architectural-patterns
modular
models
monad
types
api
functional-programming
About the speaker...Debasish GhoshPrincipal Engineer at Lightbend, Senior Member at ACM. Authored 2 books at Manning (Functional and Reactive Domain Modeling - October 2016 and DSLs In Action - December 2010). Blogs at debasihg.blogspot, codes at this github page and hangs out on Twitter @debasishg. |
|||||||||||||||
15:00
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
15:15
Invalid Time
Invalid Time
|
However, this has come at the cost of sometimes excessive compile times, is complicated by seemingly intractable issues relating to the relative priority of type class instances, and is dependent on macros and compiler internals which are unlikely to be portable to Scala compilers other the Lightbend compiler or the very closely related Typelevel Scala compiler. As Dotty and other alternative Scala compilers mature this last issue is becoming increasingly urgent. In this talk I will give a preview of work that I have been doing recently with Lightbend's support to address these issues: a combination of new Scala language features, compiler performance improvements and new derivation implementation techniques. What you will take away is a sense of how much is possible when we don't restrict ourselves to working within current Scala but also look to changing Scala to better support the way we want to work with it.
scala
compiler
About the speaker...Miles SabinMiles has been doing stuff with Scala for more than ten years, currently with Underscore Consulting. He is a cofounder of Typelevel and his best known project, the Scala generic programming library shapeless, is the weapon of choice wherever boilerplate needs to be scrapped or arities abstracted over. Head over to Miles' blog, check out his projects on GitHub and follow him on Twitter @milessabin. |
|
In Functional Programming in general and in Scala in particular, we have many data types that model those general programming aspects. In DDD terms, you could say that they model the ubiquitous language of simple computations. In this talk, you will explore and analyze a few well-known data types in Scala (Option, Either, Cats Validated, etc) and try to understand them from a Domain-Drive Design perspective. You will also discover some code samples to illustrate how they can be abused and how you can refactor them by creating new data types.
scala
functional-programming
asynchronous-programming
dddesign
About the speaker...Renato CavalcantiCheck out BeScala |
In this talk, you will discover the problems with existing approaches and how you might improve upon them. Practically you will learn how you might make some major or minor changes to your codebase to make it easier to maintain through greater clarity and composability. |
||||||||||||
16:00
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
16:15
Invalid Time
Invalid Time
|
blockchain
cryptocurrency
scala-async
About the speakers...Kingsley DaviesWhile working to make things better, he’s seen a steady evolution towards functional programming, a sharper focus on development operation teams and tools and decomposing big things into smaller composable things commonly called services. Most recently he's also dived into the ethical tech and tech for good pools and is keen to encourage and support initiatives in these areas. |
You will be exploring the tools and options available to you when tackling this issue, while weighing up the pros and cons of each. In particular taking a deep dive into:
|
|
Freestyle is a library that empowers stack-safe purely functional applications and libraries that support parallel and sequential computations where declaration is decoupled from interpretation. Freestyle encourages programs built atop Free algebras that are interpreted at the edge of your application ensuring effects are localized and performed in a controlled environment. Applications built with Freestyle can be interpreted to any runtime semantics supported by the interpreter target type.
tagless-final
microservices
rpc
free-monads
functional-programming
About the speaker...Raul Raja MartinezFunctional Programmer. Co-founder & CTO @47deg. Scala Center Advisory Board. Check out Freestyle here and also maintains Kategory. Type of a Higher Kind . |
||||||||||||
17:00
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
17:15
Invalid Time
Invalid Time
|
During this talk you will discover the so-called optic algebras, namely APIs that distill the algebraic essence of optics, and allows you to describe the data layer of your system in such a way that it can later be interpreted into particular data infrastructures -including, but not restricted to, immutable data structures. You will then learn how optic algebras are implemented as natural transformations, which become essential to enable composability, analogously to the composition benefits that emerge with van laarhoven or profunctor representations at the in-memory level. Finally, you will explore the architecture of Stateless, a Scala library that collects optic algebras and utilities to deal with them. |
During this talk, you will learn how a very simple idea of how to test with minimal effort if your Akka application is resilient in case of persistence failures. Chaos testing is very broad and complex topic. If you would like to test your application against one specific point of failure, it may be too expensive to use standard chaos testing techniques. In case of persistence failures you will discover how to use "ChaosJournal" - journal that randomly fails. You will explore a simple case study, practical advices, ideas and pitfalls. The talk will be about testing, not how to prevent loosing messages itself. Similar techniques may be used for testing against eg. remoting failures. |
Apache PredictionIO also provides various engine templates and you can choose an engine template that matches your use case the best. In this talk Takako will show you how to start by using the official templates. |
The tool aims to ease the life of developers by making installation of their favourite tools a seamless process. No more hacking of PATH and HOME environment variables! We support most versions of Scala, SBT and Activator at this time. Marco's team believes in eating their own dogfood, and SDKMAN itself is backed by Scala, with all it's API microservices written in your favourite weapon of choice! |
||||||||||||
17:30
Invalid Time
Invalid Time
|
Phantom Types have been used in functional programming for many years, but the recent addition to Dotty realises this feature in a novel way through the introduction of dedicated universes. Phantom Types enable data to be modelled with invariants that might otherwise be difficult to capture and do so without incurring any run-time overhead. In this talk you will learn what a Phantom Type is, what it can be used for (through a real-world example), and how the support for Phantom Types differs between Scala and Dotty. Joey would also like to to credit his colleague, Gianlorenzo Fagiolo, for his contribution in this talk. |
During this short session, you will learn how you can start creating custom tasks and end up with publishing community plugins. This will be based on Krzysztof's personal experience with creating the plugin sbt-flaky. |
Although GitBucket is built on Scala frameworks such as Scalatra, Twirl and Slick, it's based on existing Java technologies as well. Being able to use them is a big advantage of Scala. In this talk, you will discover GitBucket and how it's supported by Java technologies. About the speaker...Naoki TakezoeThe latest work is the Japanese translation of "Scala Puzzlers". Creator of GitBucket / Committer of Scalatra and Apache PredictionIO |
coursier is a CLI application and an sbt plugin aiming at making it easier to manage / fetch dependencies from Maven and Ivy repositories. In this talk, Alexandre will discuss how it can be put to profit to manage and launch CLI applications, as easily as one publishes and fetches libraries. Using it, applications can be published to Maven Central or bintray repositories with the exact same workflow as libraries. Launching or creating launchers for these applications is then one coursier command away for your users, like for example coursier launch com.lihaoyi:ammonite2.12.2:1.0.0, to launch Ammonite, or coursier bootstrap com.geirsson:scalafmt-cli2.11:1.1.0 -o scalafmt to generate a scalafmt launcher. Alexandre will also discuss coursier's nascent support for scala-native, allowing you to generate native applications on-the-fly from generic scala-native artifacts, as easily as it handles JVM applications. About the speaker...Alexandre ArchambaultAlexandre has been doing Scala professionally since 2013, in finance, ad tech, then full time in open source, focusing on Scala tooling. I’m the main author of coursier, Almond, and more recently Scala CLI, developed with VirtusLab. I also contributed to shapeless, Ammonite, and have smaller contributions in numerous other Scala projects. Follow Alexandre on twitter. |
||||||||||||
17:45
Invalid Time
Invalid Time
|
It’s not uncommon for a project to experience compilation times of a handful of minutes, if not worse. On top of that, compilation times are unpredictable, depending on a combination of language features, external libraries, and type annotations. A single line change may increase compilation times ten fold. Don’t bow to the compiler and accept long compilation times! Rather, join this talk to learn how the compiler works and optimize your usage of Scala to compile faster!
performance
compiler
scala
About the speakers...Mirco DottaYou can find him on twitter at @mircodotta |
In this talk, you will explore in which ways cognitive biases have negative impact on your work and the code you write. In particular, you will discover how you can use functional programming to guide your everyday choices. How can you apply knowledge from psychology to your daily work as programmers, and how can this knowledge help you enhance your code? How can you gain more self-awareness about error-inducing biases, and turn them into advantages for you and your teams? This talk will answer these questions. And you’ll leave with practical knowledge about using cognitive psychology to become a better programmer – and a better human. |
In this 15 minute talk, you will learn how to take your java-like exception handling and give it some scala functional twists. So try, catch, and finally, just come and listen. |
|
||||||||||||
18:00
Invalid Time
Invalid Time
|
End of #ScalaX Day 1 - Party buses will be ready at BDC forecourt at the end of the last session to ferry all those with party tix to CodeNode! |
|||||||||||||||
18:30
Invalid Time
Invalid Time
|
#ScalaX Party at CodeNode (10 South Place, London EC2M 7EB) with Drinks, Nibbles & Music! |
Day 2: Friday 15th December
Join us for these super sessions!
Track | Room 1 | Room 2 | Room 3 | Room 4 | ||||||||||||
08:15
Invalid Time
Invalid Time
|
Registration & Breakfast Refreshments |
|||||||||||||||
09:20
Invalid Time
Invalid Time
|
Opening & Welcome to Day 2 |
|||||||||||||||
09:30
Invalid Time
Invalid Time
|
KEYNOTE
In essence parts of this talk could be considered “why spark is built the way it is, why its not perfect, and how to work around our mistakes." It’s not all doom and gloom though, we will explore the new APIs and the exciting new things we can do with them with a brief detour into how to work around some of the trade-offs in the new APIs – but mostly focused on the new exciting shiny things we can play with. A basic background with Apache Spark will probably make the talk more exciting, or depressing depending on your point of view, but for those new to Apache Spark just enough to understand whats going will be covered at the start. The presenter would of course encourage you to buy and read her books on the topic (“Learning Spark” & “High Performance Spark”), because which presenter doesn’t do that. Even if distributed systems aren't your jam, there will be pictures of cats, gnomes, and maybe even a panda to keep things exciting. Also learning how systems like Spark have been designed and evolved can be useful to avoid our mistakes (or make you feel better about your own mistakes).
scalax
spark
keynote
scala
apache-spark
About the speaker...Holden KarauHolden is a transgender Canadian Open Source Engineer at Netflix with a focus on improving OSS data tooling. She is the co-author of Kubeflow for Machine Learning (2020), High Performance Spark (2017) and Learning Spark (2015). She is a committer and PMC on Apache Spark and committer on SystemML & Mahout projects. She was tricked into the world of big data while trying to improve search and recommendation systems and has long since forgotten her original goal. |
|||||||||||||||
10:30
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
10:45
Invalid Time
Invalid Time
|
Your applications frequently consist of business logic, communication, persistence, caches & logging. You always want to keep them apart and reason about each of them individually. However, this is very difficult to achieve in practice. Enter free monad. It lets you decouple those concerns by dividing our program into algebras and interpreters. During this talk, you will discover an application built on top of free monad in Scala & Cats. You will learn how to create pure & declarative DSLs, side-effecting interpreters and how to use them together. Then you will explore Freestyle library and show how it makes the code more concise. At the end, you will compare the free monad approach to another technique used to decouple concerns: tagless final.
software-development
akka
cats
freestyle
functional-programming
free-monad
scala
live-coding
About the speaker... |
In this talk, you will discover if it is worth to use serverless in our applications, what are the advantages and disadvantages of this approach. Secondly, you will explore the various use cases that were done considering serverless and what was the result. And finally, you will learn how Scala fits into this. This talk should be interesting if you are considering using serverless or just heard this word somewhere and would like to learn more. The talk is a little bit more focused on AWS but the understanding of the concepts covered should be beneficial even if you prefer a different service provider.
scala
serverless
distributed-systems
About the speaker...Petr ZapletalPetr participates in the whole software delivery life-cycle: from requirement analysis & design through to maintaining systems in production. During his career, Petr has worked for various companies, from start-ups to large international corporations. Technically, Petr is SMACK (Spark, Mesos, Akka, Cassandra, Kafka) evangelist. Petr enjoys working with Akka and has deep knowledge of toolkit’s features like Akka Clustering, Distributed Data or Akka Persistence. Petr is also certified Spark Developer. Follow Petr on @petr_zapletal. |
Taking a step back, as vigilant observers of type safety, you try to leverage the type system to ensure the correctness of your code. But when the domain constraints become too involved, constructing the appropriate types might become cumbersome. In this talk, after introducing some basic Prolog phrased in the language of implicits, you will discover how this newfound power can free you from the burden of type construction by letting the compiler do most of the grunt work for you. |
|
||||||||||||
11:30
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
11:45
Invalid Time
Invalid Time
|
This talk uses the power of recursion schemes to predict survival on the Titanic. Zainab will show that recursion schemes can be used to grow a decision tree and make predictions from it. Furthermore, they give us far more benefits than the basic folds or unfolds we would otherwise use. You will make use of many folds, unfolds and even refolds. Be prepared to exercise your skills in origami! |
During this talk, you will explore the following:
Time permitting, you will also discover a demo on a networked application sending back pressure through the application layer, through TCP and into the client application. |
By Church encoding our program, you can retain the simple semantics that characterises FP code, while achieving performance that may seem out of reach in a pure FP system. |
A list of concurrency related features has been added to IntelliJ IDEA. It includes the asynchronous debugger that is applicable to any concurrent framework. It includes a number of inspections for Given that, building a good concurrent application is going to be less painful. Especially if using Akka framework. |
||||||||||||
12:30
Invalid Time
Invalid Time
|
Lunch Break |
|||||||||||||||
14:00
Invalid Time
Invalid Time
|
In this talk, you will learn how to test our software better by writing integration tests using sbt configurations, Scalatest async utilities and Docker. About the speaker...Emanuele BlancoIn the past, he has been actively involved in the organisation of the London Software Craftsmanship Meetup, which aims at raising the bar of professional software development. He is currently Lead Developer at Moneyfarm, and he maintains this github. You can follow Emanuele on Twitter @manub. |
|
scala
scalac
compilers
performance
optimisation
About the speaker...Rory GravesFollow Rory on twitter. |
|||||||||||||
14:45
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
15:00
Invalid Time
Invalid Time
|
In this talk, you will explore the comparison between the current biggest players of the serialization world: Protocol Buffers (Protobuf), Avro, Thrift and Kryo, and also might rant a bit about Java Serialization and JSON. You will discover how integration in the Scala and sbt ecosystem works, what schema evolution is and how we deal with it and only a brief bit about performance. Bonus points are awarded for portability to other platforms, maturity and community activity. Afterwards you’ll have a solid base to decide which serialization framework is the right one for you. Expect lots of code samples! |
|
Having its roots in the Clojure community Datomic might be perceived as something foreign from a Scala developers point of view. You will discover that the contrary is the case and there are sizeable benefits in using an immutable database of facts. There are, in fact, a couple of Scala libraries around that make Datomic a viable choice. Expect an experience report from the battlefield of the day-to-day. During this talk, you will learn from mistakes made, benefits reaped and explore how Peter and team extended on the existing libraries to integrate Datomic better into their Play and Akka application. |
You will also explore where "Polymorphic record types in a lifted embedding" dropped off, at the AST of a Slick query, and follow the compilation all the way to the SQL code generator. You will learn how the compiler works and how to work on it, for example creating test cases and enabling and understanding the debugging output you can get for them. After an introduction of the basic concepts (trees, types, symbols, etc.) we cover some interesting compiler phases and implementation details. |
||||||||||||
15:45
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
16:00
Invalid Time
Invalid Time
|
You will explore the similarities between writing and coding, and uses writers’ advice to identify different kinds of avoidable bad naming in code. Some class, method, and variable names are so bad that they’re funny, but you’ve still seen them in production code. The second part of the session explores practical techniques for working on better naming, including renaming things. Renaming is even harder because it includes naming things plus other hard things. The final section goes back to writing. The next step after finding better names in code is to write better comments in code, which is almost as hard as naming is. The surprising thing about naming things well in code is not that it’s hard, but how easy it is to accept bad names. This is a hard problem that’s worth working on, because although you can’t make the naming problem go away, you can learn to write much better code regardless of which technologies you use. |
What if you could extend this and have types that provide even stronger guarantees, for example: a String that is never empty, an Int that is always known to be positive? Refinement types allow exactly this. You refine a base type, like a String with a predicate, such as minimum length must be 5 and wherever you have a value of this refined type in your code, you can rest assured that it conforms. In this session, you will explore the refined library and learn how to use it in practice with some popular libraries/frameworks. Together you will discover a Play/Slick example application that's strongly typed, using refinement types. |
Embedded Domain Specific Languages or eDSLs allow us to build a data structure that represents the expressions of the target language. In this talk, you will discover the tagless final approach for building DSLs. You will also compare other styles of DSLs like ADTs and Free Monads and have a look at the respective trade-offs. Finally, you will build the purely functional DSL for WebGL using Scala.js and create a small, but awesome 3d app in the browser.
scala
dsl
functional-programming
scalajs
api
About the speaker...Luka JacobowitzHe is the author of the reactive UI library and you can find his cv here and his blog under lukajcb.github.io. |
|
||||||||||||
16:45
Invalid Time
Invalid Time
|
Coffee Break |
|||||||||||||||
17:00
Invalid Time
Invalid Time
|
KEYNOTE
scala
scalax
keynote
About the speaker...Rúnar BjarnasonRúnar is a cofounder of Unison Computing, which is creating the Unison programming language. Rúnar has been doing purely functional programming in Haskell and Scala since 2005, and has authored books on Functional Programming in Scala and Kotlin. Follow Rúnar on Twitter here. |
|||||||||||||||
18:00
Invalid Time
Invalid Time
|
KEYNOTE
|
|||||||||||||||
18:15
Invalid Time
Invalid Time
|
#ScalaX 2017 ends! See you in 2018! |
-
The Ubiquitous Language in Functional Programming
Featuring Renato Cavalcanti
Domain modelling in software is never pure. Next to the domain data and business logic there is a whole other universe of programming language constructs that we have to deal with (control structures, error handling, asynchronous computations, etc).
scala functional-programming asynchronous-programming dddesign -
2
Automatic Parallelisation and Batching of Scala Code
Featuring Gjeta Gjyshinca and James Belsey
Morgan Stanley has developed a technology that allows the widespread automatic parallelisation of execution. James and Gjeta are part of a team who, using the Scala language and ecosystem, have built a runtime that automatically parallelises users’ Scala code. During this talk, you will discover...
scala parallelism -
Lightning Talk - Install Your Scala Toolchain with SDKMAN!
Featuring Marco Vermeulen
SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates.
-
Keynote: The Maths Behind Types
Featuring Bartosz Milewski
You often think of types as specifying data layouts in computer memory. You have bytes, shorts, floats, and arrays, which are very close to the metal. But then you have integers and Booleans, which are abstractions taken from math. And then there are algebraic data types, and function types....
scalax scala category-theory constructive-logic type-system types mathematics maths math bigdata -
Akka support in IntelliJ IDEA
Featuring Andrew Kozlov
No doubt that almost every application is multi-threaded nowadays. But building a good one is still a big deal. For example frameworks (that were actually supposed to make the concurrent programming easier) became quite complicated themselves. So now it's IDEs' turn.
scala akka kotlin jetbrains -
Farewell Any => Unit, Welcome Akka Typed!
Featuring Heiko Seeberger
Akka has become a very successful platform for building reactive systems. At its core the akka-actor module implements the actor model as created by Carl Hewitt et al. Surprisingly enough, although Scala and Java are type safe languages, Akka actors are untyped. This means that we can send Any...
scala akka -
Real World Serverless
Featuring Petr Zapletal
Serverless is a hot topic in the software architecture world and also one of the points of contention. Serverless can let you run our code without provisioning or managing servers. You don't have to think about servers at all. Things like elasticity or resilience might not longer be our...
scala serverless distributed-systems -
Building a Tagless Final DSL for WebGL in Scala
Featuring Luka Jacobowitz
In functional programming you very often find yourselves 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.
scala dsl functional-programming scalajs api -
Integration Testing using sbt, Scalatest and Docker
Featuring Emanuele Blanco
Unit tests help you to write software that adheres to a certain sets of requirements, expressed as tests. However, they focus on testing units of software in isolation and not so much on how major parts of a system are integrated. Integration tests fill this gap, and they are an important part of...
-
Free Monad or Tagless Final? How Not to Commit to a Monad Too Early
Featuring Adam Warski
Functional programming is on the rise; monads are everywhere. But how to choose the right wrapper for the values which we manipulate (i.e. monad)? Quite often, the answer is far from obvious, and it’s useful to delay the decision as much as possible. Furthermore, picking a particular monad too...
scala functional-programming free-monads tagless monads -
Freestyle, Free & Tagless: Separation of Concerns on Steroids
Featuring Michał Płachta
You will learn how to cut your applications into isolated, independent pieces using Freestyle library with free monads or tagless final style. The session is based on a multiplayer, purely functional version of Prisoner’s Dillema.
free-monad scala live-coding functional-programming freestyle cats akka software-development -
The Path to Generic Endpoints Using Shapeless
Featuring Maria-Livia Chiorean
Programming in Scala is sometimes very time consuming. Finding the most efficient way to solve a problem can end up in days of frustration. During this talk you will discover a story of trial and error with a twist at the end. It’s a story of API endpoints, generic programming, Shapeless and what...
scala shapeless type-classes thrift -
A Practical Introduction to Reactive Streams with Monix
Featuring Jacek Kunicki
Stream processing is a hot topic today and it’s easy to get lost among all the possibilities. In this live coding session, you will explore the Reactive Streams approach used by the Monix project - one of the Scala implementations of the Reactive Streams concepts. On an almost real-life example,...
reactive reactive-streams monix scala -
Lightning Talk - Control the Chaos
Featuring Piotr Śliwa
Akka doesn't guarantee message delivery, especially for remoting or persistent actors.
testing akka -
Away With the Types!
Featuring Dave Gurnell
Static types are fantastic for ensuring code quality, but rather annoyingly they have to be defined at compile time. What happens when you need to determine the structure of your data at run time, for example when you have to load schemas from a database?
scala types -
ScalaX 2017 Wrap Up Presentation
Featuring Ariel Horn
Don't miss the closing to a wonderful conference and a peek into 2018!
-
Refinement Types in Practice
Featuring Peter Mortier
When you first learn scala, coming from another language such as Java, you'll probably fall in love with the Option type. This type protects you from bugs because you know that the value wrapped in an Option might be absent and if you have a plain value, you know it will never be null.
scala types -
Opening & Welcome to ScalaX 2017!
Featuring Dave Gurnell
Join us as we welcome you to a new year of Scala eXchange!
-
Lightning Talk - Exploring Phantom Types: Compile-Time Checking of Resource Patterns
Featuring Joey Capper
The Dotty platform comes with a host of new and revised language features that aim to simplify the Scala landscape. In this talk you take a brief look at one such feature: Phantom Types.
phantom-types dotty compile-time-verification type-theory -
Lightning talk - Optic Algebras: Beyond Immutable Data Structures
Featuring Jesus Lopez Gonzalez
Optics (Lens, Traversal, etc.) are great abstractions that allow you to carry out complex state transformations using high-level design patterns. However, current optic libraries are restricted to work with in-memory data structures. In fact, this limitation might be one of the causes why optics...
optics composition stateless -
Lightning Talk: A Titanic Introduction to Monitoring with Prometheus
Featuring Mohamed Menaa
In this talk, Mohamed will introduce Prometheus, highlight its advantages and disadvantages as a monitoring tool, then share with you how you can get started in 5 minutes.
-
Lightning Talk - Coding Under Uncertainty
Featuring Silvia Pina
As programmers, you want to write high-quality code that doesn’t contain errors. This means that you need to use a considerable amount of logic in your daily work. But you're not only programmers, but also humans. As such, you’re not purely logical, since you only possess a limited reasoning...
psychology code-quality cognitive-bias -
Lightning Talk - Leave Jala Behind: Better Exception Handling in Just 15 Mins
Featuring Netta Doron
Ever looked at your exception handling and wondered, "wow this looks a lot like java"? Write Jala no more!
exception-handling functional scala micro-services tdd -
2
Lightning Talk - 5 Things You Need to Know About Scala Compilation: #3 Will Blow Your Mind!
Featuring Iulian Dragos and Mirco Dotta
You love Scala, but the one aspect you have a hard time accepting are long compile times.
scala compiler performance -
Lightning Talk - Seamless App Distribution with Coursier
Featuring Alexandre Archambault
Up to now, Scala has seen a lot of adoption on the server side. But JVM warm up is not that a problem in many cases, and with scala-native around the corner, Scala is undoubtedly about to become a language of choice for CLI applications! Yet, packaging a CLI application is not as straightforward...
-
Lightning Talk - Tour of Apache PredictionIO in 10 Minutes
Featuring Takako Shimamoto
Apache PredictionIO can be installed as a full machine learning stack, bundled with Apache Spark, HBase and Elasticsearch, which simplifies and accelerates scalable machine learning infrastructure management.
apache -
Lightning Talk - Sbt plugins 101c : How to Create Your Own Plugin
Featuring Krzysztof Otrebski
Sbt offers a lot of functionality out of the box. A bigger advantage is the ease of creating custom tasks and plugins. Sbt has a high entry threshold but extending builds is easy.
sbt plugins -
Keynote: Architectural patterns in Building Modular Domain Models
Featuring Debasish Ghosh
A successful domain model is built through the confluence of several architectural patterns. As Christopher Alexander suggested, you can call these patterns generative when the architecture of the model evolves from the individual patterns similar to how genetic material or DNA generates the form...
architectural-patterns modular models monad types api functional-programming -
Holophrase: Baby’s First DSL
Featuring Daniel Porter
Using a toy language for declarative infrastructure, this talk will explore functional programming techniques for writing domain specific languages. The talk will start with a single function and demonstrate how to use ADTs to write an embedded DSL and interpreter. You will then discover parser...
dsl adts functional-programming -
A Reactive Database of Facts
Featuring Peter Brachwitz
Datomic is a relatively new and exiting entry into the database world. Its combination of the read-scalability of a NoSQL solution, the consistency guarantees known from traditional relational databases and a powerful query language is only one reason to take a closer look. No matter whether you...
reactive scala datomic play akka functional-programming clojure -
Introduction to Freestyle & Freestyle RPC
Featuring Raul Raja Martinez
During this talk, you will discover the current Features available as of Freestyle 0.4.2 Including Freestyle RPC, a new module to build purely functional microservices.
functional-programming free-monads rpc microservices tagless-final -
Move Fast and Fix Things
Featuring Gabriele Petronella
Scalafix is a rewrite and linting tool for Scala. Initially born for migrating Scala 2 code to Dotty, it has now become general purpose and it's being adopted by library authors and development teams. In this talk, you will discover where Scalafix is positioned in the universe of Scala...
devtools -
Compiling Collections to SQL with Slick
Featuring Stefan Zeiger
During this talk, you will discover an introduction to Slick's query compiler. Nowadays Slick has many contributors who have worked on different areas of the codebase, from fixing simple documentation bugs to changing intricate details of the asynchronous execution engine. However, only few...
scala slick sql compiler -
Moving Away from Hope-Driven Development
Featuring Andrew Gustafson
If you've ever been bitten by a completely unexpected RuntimeException then you've been affected by Hope-Driven Development. If you've ever had to trawl through the source code of the function that you're calling in order to work out what might happen when you call that function,...
scala runtime-exception -
Building Scalable, Back Pressured Services with Akka
Featuring Christopher Batey
What does it means for our programs to be asynchronous and back pressured and why is it so important for scalable services?
scala akka scalability backpressure -
How to Name Things: The Hardest Problem in Programming
Featuring Peter Hilton
Developers can get better at their craft by learning from the great writers who mastered theirs. Writing software isn’t the same as writing a novel, but there are parallels. Besides, advice from writers is better because writers have been struggling with their craft for many centuries, not just a...
scala programming naming techniques software-craftsmanship -
Is ScalaC Getting Faster, or Am I Just Imagining It?
Featuring Rory Graves
ScalaC is getting faster. Performance was a primary theme in 2.12.3. Whilst it may not have hit '10 times faster' we are approaching 50% faster and there is potential to go even faster. During this talk, you will explore the progress made by Lightbend and the community and explore the...
scala scalac compilers performance optimisation -
Shapeless is Dead! Long Live Shapeless!
Featuring Miles Sabin
Shapeless has led the way on automatic type class instance derivation since the arrival of the TypeClass type class back in 2013. Since then this mechanism has evolved through the introduction of the Lazy type which allows the most general form of type class derivation currently available in...
scala compiler -
A Pragmatic Introduction to Category Theory
Featuring Daniela Sfregola
Category Theory has become one of the hot topics in our community. Why is this theory suddenly so interesting for developers? Why are the cool kids talking so much about it?
-
Deep Learning data pipeline with TensorFlow, Apache Beam and Scio
Featuring Vincent Van Steenbergen
In this talk, you will discover how to leverage Scio, the Scala API for Apache Beam and it’s module scio-tensorflow to integrate Deep Learning into your batch or streaming data pipeline. You will explore the core concepts of Apache Beam, a quick tour around Scio Scala API and then illustrate...
scala scio api apache-beam tensorflow deep-learning -
8 Akka Anti-Patterns You'd Better Be Aware Of
Featuring Manuel Bernhardt
CAUTION: If you are responsible for an Akka system deployed to production, attending this talk may cause intense moments of self-doubt, stress and possibly panic.
scala akka concurrency distributed-systems -
How to Program the Type System
Featuring Tamer AbdulRadi
Scala has a rich static type system which provides powerful features such as implicits and typeclasses.
scala typelevel typeclass hilst induction -
Lightning Talk - GitBucket: Git Centric Software Development Platform by Scala
Featuring Naoki Takezoe
GitBucket (https://github.com/gitbucket/gitbucket) is a Git centric web based integrated software development platform like GitHub, BitBucket or GitLab. It is one of most popular applications written in Scala which got 6700+ stars on GitHub and many users over the world.
-
Keynote: Composing Programs
Featuring Rúnar Bjarnason
As creators of software, you grapple with the question of how to assemble components into large-scale systems that you can easily understand, and then use as components in further systems. Fortunately, functional programming has an easy answer: functions are compositional. In fact, you could say...
scala scalax keynote -
Keynote: The Magic Behind Spark
Featuring Holden Karau
Apache Spark is one of the most popular general purpose distributed systems, and has driven a lot of growth in the Scala community. This talk will look at the magic which makes Spark work, peeling back the curtain to revel the several hundred gnomes that secretly power most distributed systems.
scalax spark keynote scala apache-spark -
Topiary and the art of origami
Featuring Zainab Ali
Recursive data structures are a core tool of any functional programmer's toolkit, but they are also one of the most challenging. Budding functional programmers are plagued with nightmares of infinite recursion, mental stack overflows, and the terrifying fixed point. Recursion schemes,...
matryoshka scala decision-trees functional-programming -
Don’t Call Me Frontend Framework! A Quick Ride on Akka.Js
Featuring Andrea Peruffo
During this talk, you will explore a journey from the very basics and learn how Akka actor model applies properly in business logic, software infrastructure as well as in managing UI. In the end, you will discover some of the features under development and what you are trying to achieve.
akka scala ui -
Uniting Church and State: FP and OO Together
Featuring Noel Welsh
In this talk, you will explore an underappreciated tool, Church encoding, that allows you to combine the best parts of FP and OO.
functional-programming reactive big-data scala -
Almost Type-Safe Error Handling
Featuring Benjamin Parker
Deciding the return types of independent sections of your code base is a complicated and extremely important part of developing in Scala. You want each module to be self contained and descriptive while remaining composable with each other. A difficult balancing act.
scala clean-code microservices type-safety adt -
2
Understanding Blockchain
Featuring Kingsley Davies and Pere Villega
Blockchain is the current hype in tech. People believe its impact in companies will be of the same magnitude as the event of internet. But, what is Blockchain itself? In this talk, you will discover a blockchain from scratch, using Scala, to understand its capabilities and limitations. That...
blockchain cryptocurrency scala-async -
Creating a Physics Simulation with Scala JS
Featuring Noel Markham
This talk will be an interactive session of writing code, with no slides, to create a basic physics simulation using Scala JS. Starting with a fresh project, youwill create a small Javascript application which allows objects in motion to interact with themselves and their environment. The project...
scala javascript physics -
Compile Time Logic Programming in Scala - What For?
Featuring Daniel Beskin
It has been known that Scala's implicits allow one to write Prolog-like programs that run at compile time. And although letting the compiler solve your daily Sudoku puzzle for you is fun, how could that possibly be useful in an actual program?
compile-time-programming scala implicit-magic -
Serialization Protocols in Scala: a Shootout
Featuring Christian Uhl
Decoupled applications exchange messages – between JVMs, over the network or via messaging systems like Kafka, Pub/Sub and Kinesis. Therefore messages are everywhere – sometimes they live for milliseconds, sometimes they get persisted for years. When the types of these messages start to evolve...
distributed-systems kryo scala
-
ScalaX2gether Community Day 2018
One day in London
We're excited to announce ScalaX2gether, to be held on Saturday 15th December at Skills Matter's home, CodeNode. #ScalaX2gether is organised by Skills Matter and the Community. Together, we will host a day-long event with a few workshops and challenges.
fury functional-programming microservices hackathon hack scalax scala -
Scala eXchange London 2018
Two days in London
Join us at Scala eXchange London 2018, Europe's largest gathering of Scala engineers, to discover where Scala is headed in 2019 and to meet, learn and share skills with 1,000+ other passionate Scala developers.
types scala-cats cats tagless-final tagless spark-streaming kafka apache-spark apache-kafka scalaz scalacheck dotty spark akka scalac scala-web data scala-test devops microservices functional-programming reactive scala -
ScalaX2gether Community Day
One day in London
We're excited to announce the return of the Scala eXchange Community Day - ScalaX2gether, to be held on Saturday 16th December at Skills Matter's home, CodeNode. The #ScalaX2gether is organized by Skills Matter with the aim of hosting a community day with a few unconference sessions.
scala scalax hack community -
ScalaXHack 2016
One day in London
We're excited to announce the return of the Scala Exchange Hack Day, to be held on Saturday 10th December at Skills Matter's home, CodeNode. The #ScalaXHack is organized by Skills Matter, with Underscore, Typelevel, and the Scala Centre. Together, we will host a daytime hackathon with a...
scala hack scalax scalaxhack hackathon unconference typelevel underscore functional-programming fp -
Scala eXchange 2016
Two days in London
Want to understand where Scala is going, what’s Lightbend’s vision for collaboration, competition and interoperability in Scala? How the Dotty project will help develop new technology for Scala tooling and concepts for future Scala language versions? Are you involved in a large Microservices or...
scala reactive-programming functional-programming akka play lift machine-learning deep-learning scalax -
ScalaXHack
One day in London
We're excited to announce the first ever Scala Exchange Hack Day, to be held on Saturday 12th December at CodeNode in partnership with Underscore and the London Scala User Group.
scala scalaxhack scalaxhack-day -
Scala eXchange Party
0.5 days in London
Scala eXchange 2015 continues at Skills Matter's new home CodeNode for the Scala eXchange Party! Starting at 6.30pm on 10th December 2015!
scala scala-x -
Scala eXchange 2015
Two days in London
Want to hear the latest happenings in the world in Scala? Interested in hearing how your peers are approaching similar software challenges? Then join us at Scala eXchange 2015, Europe's largest community conference on Scala.
scala reactive-programming functional-programming akka play lift -
Scala eXchange 2014
Two days in London
Join us at Europe's largest and most comprehensive annual Scala conference in London. The Scala eXchange brings together the world's top Scala experts with Europe's passionate community of Scala developers.
scala reactive-programming functional-programming akka play lift big-data -
Scala eXchange 2013
Two days in London
The Scala eXchange returns to Skills Matter for it's third year - share, learn and innovate with 350+ attendees, 60+ presentations, and the world's greatest Scala Rock Stars!
scala akka playframework spray scalatest scala-collections reactive-programming scala-macros scalax functional-programming -
Scala eXchange 2012
Two days in London
The Scala eXchange returns to Skills Matter for it's second year. The Scala eXchange comes in the wake of Scala Days in April - 350+ attendees, 60+ presentations, and the lovebus! -
For updates on our latest confirmed speakers and talks, follow us on Twitter @skillsmatter and #scalax
scala akka typesafe -
Scala eXchange 2011
Two days in London
Skills Matter is very pleased to announce our first-ever annual Scala eXchange, on June 15-16 2011 in London.
This 2-day conference provides both high level presentations and low level follow-up tutorials/design discussions afterwards -- making it one of the most exciting dates on the calendar of...
scala functional-programming