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 Big Data project and want to learn how the Reactive Architecture and SMACK stack help address common challenges? Join Scala eXchange 2017!
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 |
Registration & Breakfast Refreshments |
|||||||||||||||
09:15 |
Join us as we welcome you to a new year of Scala eXchange! About the speaker...Dave GurnellDave is a Scala consultant and developer working for Underscore in London, UK. He has been a Scala developer since 2010 and a functional programmer for nearly a decade. Follow Dave on twitter. |
|||||||||||||||
09:30 |
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. During this talk, you can discover where these come from. There is some fascinating math behind types that you can learn from. It was first developed to avoid paradoxes in the naive set theory, and then it was linked to constructive logic and category theory. For instance, did you know that function types are defined in a cartesian closed category (Bartosz will share what it is)? Or that implementing a function is equivalent to proving a theorem? This "higher math" is actually quite approachable, if you're a programmer.
scalax
category-theory
constructive-logic
type-system
mathematics
maths
math
data
scala
types
About the speaker...Bartosz MilewskiBartosz started as a physicist. He has a Ph.D. in quantum field theory. Then he got into programming, worked eight years for Microsoft as a software engineer implementing the search engine in Windows. He wrote a book about C++ and started a popular programming blog. He rediscovered his fascination with mathematics through Haskell. His blog turned into an online book on category theory for programmers. |
|||||||||||||||
10:30 |
Coffee Break |
|||||||||||||||
10:45 |
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 early might only obscure important business logic details. 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
tagless
monads
free-monads
functional-programming
scala
About the speaker...Adam WarskiAdam is one of the co-founders of SoftwareMill, a company specialising in delivering customised software solutions. He codes mostly on the back-end using Scala and other interesting technologies. Adam created a couple of open-source projects, such as sttp, MacWire, Hibernate Envers and ElasticMQ. He has been a speaker at major conferences, such as Devoxx, JavaOne, LambdaConf and ScalaDays. Apart 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. |
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. 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.
concurrency
distributed-systems
akka
scala
About the speaker...Manuel BernhardtManuel Bernhardt is a passionate engineer, author, speaker and consultant who has a keen interest in the science of building and operating networked applications that run smoothly despite their distributed nature. Since 2008, he has guided and trained enterprise teams on the transformation to distributed computing. In recent years he is focusing primarily on production systems that embrace the reactive application architecture, using Akka, Play Framework, Scala and Java to this end. Manuel 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. |
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? 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 GurnellDave is a Scala consultant and developer working for Underscore in London, UK. He has been a Scala developer since 2010 and a functional programmer for nearly a decade. Follow Dave on twitter. |
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 will be driven by types, to help create a model of the world, and should show the awesome power of Scala and Javascript working together.
javascript
physics
scala
About the speaker...Noel MarkhamNoel started out as a Java developer in finance before moving to functional programming in startups for both games and social media. More recently, he has worked in broadcast media. Follow Noel on Twitter |
||||||||||||
11:30 |
Coffee Break |
|||||||||||||||
11:45 |
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 message to an actor even though this will only handle specific ones – the compiler is not able to help us. Fortunately rescue is at hand in the form of Akka Typed. In this talk we introduce its API, discuss differences between the "old and new" world and show options for migration and integration.
akka
scala
About the speaker...Heiko SeebergerHeiko Seeberger is Fellow at codecentric, an internationally renowned expert on Scala and Akka and loves Rust almost as much as rock climbing. He has more than 20 years of experience in software engineering, consulting and training. Heiko tweets as @hseeberger and blogs under heikoseeberger.de. |
Scala has a rich static type system which provides powerful features such as implicits and typeclasses. 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.
typelevel
typeclass
hilst
induction
scala
About the speaker...Tamer AbdulRadiTamer is the author of Troy, the schema-safe Scala Cassandra driver. He has been building stuff with Scala since 2012, now he is a senior software engineer at Cake Solutions. Check Tamer's posts at abdulradi.com. |
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? 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. About the speaker...Daniela SfregolaDaniela Sfregola is a Software Consultant based in London, UK. She has worked as Java developer before moving towards Scala. She is an active contributor to the Scala Community and a passionate blogger at danielasfregola.com. |
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 tooling, what it can do for you and how to write your own Rules for fixing and linting your code.
devtools
About the speaker...Gabriele PetronellaGabriele is co-founder of buildo, where he’s a software engineer, working with Scala and TypeScript. He founded the Scala User Group in Milan and he’s one of the organizers of Scala Italy, the Italian conference on Scala. In the - rare - free time, you’ll find him on a plane or at the basketball court. |
||||||||||||
12:30 |
Lunch Break |
|||||||||||||||
14:00 |
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 of organisms. An alternative way to think of this is when the domain model as a whole evolves as a compositional structure from each of its piecemeal components. 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
api
functional-programming
types
About the speaker...Debasish GhoshPassionate about technology, loves functional programming, maths and machine learning. Principal 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 |
Coffee Break |
|||||||||||||||
15:15 |
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. This is what forms the basis for a whole host of automatic and semi-automatic derivations in a wide variety of libraries. 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.
compiler
scala
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. |
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 how code can be written with no concern for parallelism and automatically executed on multiple cores. Similar in aims to Twitter’s Stitch framework, this approach attempts to achieve the same goals without use of for-comprehensions. You will learn how calls to storage and other expensive operations can be automatically grouped by the technology. You will explore how it was built using Scala, see live demonstrations, and hear a discussion of the theory behind the practice. The system is battle-tested in a project comprising of hundreds of devs and millions of lines of Scala code. The technology has been in development for six years and this will represent the first public discussion of it. This talk will cover purely a description of the technology that has been built.
parallelism
scala
About the speakers...James BelseyJames has been working on this Scala-based project for six years and is a Scala Center member. Part of the sponsorship process for the initial work on Slick and ongoing work on performance of the core Scala compiler. He has had numerous other engagements with Scala. Gjeta GjyshincaGjeta is a project engineer working for the last year in the core technology of the project. She has been profiling applications to identify reasons for cache misses and concurrency bottlenecks. She has also been tracking and analysing efficiencies across the codebase and including caching of bitemporal database queries for optimal reuse. |
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). 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.
asynchronous-programming
dddesign
functional-programming
scala
About the speaker...Renato CavalcantiRenato is a software developer at Lightbend where he works in the Lagom Framework Team. Scala aficionado since 2009, he has been hacking in Scala and related technologies for fun and profit. He has a special interest for Event Sourcing/CQRS, DDD and Microservices Architectures. He's the founder of BeScala (Belgian Scala User Group), author of Fun.CQRS and maintainer of Lagom Framework. Check out BeScala |
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, then you'll realise the value of being able to trust a piece of code to do exactly what it says it will do. You would like to know that the code that you call is simple to understand without having to understand the internal workings, and that it will work exactly as expected,* 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.
runtime-exception
scala
About the speaker...Andrew GustafsonGus previously worked as a java developer in finance and media, experiencing all of the delights that come with over-engineering a large XML-configured application. He has spent the last few years writing scala apps and playing buzzword bingo in startups. Currently he is a Senior Scala Developer/Technical Architect at Depop, a social selling app. Follow Andrew on twitter. Check out Depop at http://www.depop.com/ |
||||||||||||
16:00 |
Coffee Break |
|||||||||||||||
16:15 |
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 will be used to built a digital currency on top of it. And you will explore other possible uses of a blockchain.
blockchain
cryptocurrency
scala-async
About the speakers...Kingsley DaviesKingsley is a Partner at Underscore consulting, and has spent over a decade designing, developing and supporting large scale systems for a number of clients including, Betfair, the BBC, Barclaycard and others that don't start with a B ;-) While 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. Pere VillegaSoftware developer originally from Barcelona, moved to Dublin 7 years ago and came to London last year to join Gumtree.com. Passionate about technology and a Scala fan. |
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. 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:
clean-code
type-safety
adt
microservices
scala
About the speaker...Benjamin ParkerBen Parker is a scala developer with ITV, working in a microservice architecture on a team dedicated to personal user data and ITVs premium offering. Fanatical about friendly clean code and high-functioning teams. |
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 happens when they all come together. Everything with examples and plenty of code.
shapeless
type-classes
thrift
scala
About the speaker...Maria-Livia ChioreanMaria-Livia joined the Guardian in September 2015 as a graduate software developer. Since then, she has been working with 3 different teams within the company and collaborated with many others, she has been learning Scala and contributing daily to making quality journalism easy to produce and consume. |
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. 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 |
Coffee Break |
|||||||||||||||
17:15 |
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 are still fairly unknown by the community. Ideally, you should be able to exploit the optic expressiveness and composition capabilities when application state is handled, for instance, through relational databases, event sourcing or web services. 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.
stateless
composition
optics
About the speaker...Jesus Lopez GonzalezJesus is a PhD student at Habla Computing (Madrid), where he tries to take academic functional programming knowledge to the development of real-world systems in industry. |
Akka doesn't guarantee message delivery, especially for remoting or persistent actors. 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.
akka
testing
About the speaker...Piotr ŚliwaPiotr is a software developer living in Kraków, Poland. He is working now for Ocado Technology, making things work in automated warehouse eg. thanks to actor-based software. |
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 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.
apache
About the speaker...Takako ShimamotoTakako has been programming in Scala since 2012 and has written a few Scala books in Japan. She is also a PMC member. |
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. 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! About the speaker...Marco VermeulenMarco Vermeulen is a South African Software Developer who works and lives in London. He is passionate about writing well crafted code, driven and guided by tests. As a proponent of BDD, he has successfully applied this technique in the Enterprise as well as on Open Source Projects. He is an avid supporter of OSS and is the creator of SDKMAN, the Software Development Kit Manager. |
||||||||||||
17:30 |
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 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.
type-theory
compile-time-verification
dotty
phantom-types
About the speaker...Joey CapperJoey is a software developer at OVO Energy using functional programming and Scala to solve problems in the wild. Before that, Joey completed a Ph.D in typed functional programming |
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. 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.
plugins
sbt
About the speaker...Krzysztof OtrebskiKrzysztof is a software developer with 10 years of professional experience. Having spent many years on Java programming and problem solving, he has developed useful tools that make a programmer’s life easier. He is also a founder of a few open-source projects. Follow Krzysztof on twitter. |
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. 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 TakezoeNaoki works for BizReach, Inc in Tokyo, Japan. He has over 6 years Scala experience, and author of some books and articles about Scala in Japanese. The latest work is the Japanese translation of "Scala Puzzlers". Creator of GitBucket / Committer of Scalatra and Apache PredictionIO The latest work is the Japanese translation of "Scala Puzzlers". Creator of GitBucket / Committer of Scalatra and Apache PredictionIO |
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 as publishing libraries. One has to chose how to package the application (jar, deb, OS X or Windows installers, ...), how to publish these packages, on which servers, etc. 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 Archambault is currently working with Criteo. He has been solving data related problems and doing math with Scala professionally since early 2013, and has been contributing regularly to shapeless since mid-2014. Follow Alexandre on twitter. |
||||||||||||
17:45 |
You love Scala, but the one aspect you have a hard time accepting are long compile times. 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...Iulian DragosIulian Dragoș dreams about a world where the Scala programming language is the default choice for new projects. He learned Scala by writing the compiler backend for it during his PhD at EPFL, back in 2004, and he was the first employee of Lightbend (formerly Typesafe). At Lightbend he helped the company grow from 5 to 85 employees, playing the role of engineer, technical lead, consultant, trainer or sales engineer. Iulian is a frequent speaker at conferences and actively contributing to several open-source projects. Mirco DottaCo-founder of a stealth mode startup aiming at revolutionising Scala developers' life. Mirco has 10+ year experience with Scala, and also has extensive knowledge on Akka, Lagom, Playframework, and Sbt. Before founding his own company, he worked at Lightbend (formerly known as Typesafe), where he wore different hats: from engineering, to consulting, and (fun fact) even sales! He is a certified Lightbend trainer for Akka, Playframework, and Scala. He loves meeting people and sharing experiences, so don't hesitate to say hi when you see him. In his freetime, he plays chess and studies wine - both theory and practice! :) You can find him on twitter at @mircodotta |
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 process – and you’re full of cognitive biases. Thus, you tend to rather use heuristics to simplify problems, which introduces errors in your code. – All of this while you're trying to deal with machines that are highly rational. 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.
cognitive-bias
code-quality
psychology
About the speaker...Silvia PinaSilvia Moura Pina is a software engineer working primarily with Scala. She has studied computer science and psychology and she's always interested in bringing up topics that intertwine the two fields. |
Ever looked at your exception handling and wondered, "wow this looks a lot like java"? Write Jala no more! 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.
tdd
micro-services
functional
exception-handling
scala
About the speaker...Netta DoronNetta's career spans 10 years, 3 companies, and 3 languages. Fortunately, the last four years have been spent at Wix, working in Scala. Her love of clean coding and TDD have helped her build microservices in Scala that run Wix Pro Gallery and Wix Photo Albums. She has two wonderful kids, who don't yet know Scala, and a wonderful husband, who although wonderful, doesn't want to hear another word about that Scala thing. |
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. About the speaker...Mohamed MenaaMo is a developer currently working at Ocado Technology as a tech lead where he makes automated warehouses whizz as efficiently as possible. |
||||||||||||
18:00 |
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 |
#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 |
Registration & Breakfast Refreshments |
|||||||||||||||
09:20 |
Opening & Welcome to Day 2 |
|||||||||||||||
09:30 |
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. 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).
spark
apache-spark
scalax
keynote
scala
About the speaker...Holden KarauHolden is a transgender Canadian open source developer advocate with a focus on Apache Speark, BEAM, and related "big data" tools. She is the co-author of Learning Spark, High Performance Spark, and another Spark book that's a bit more out of date. She is a committer on the Apache Spark, SystemML, and Mahout projects. Prior to joining Google as a Developer Advocate she worked at IBM, Alpine, Databricks, Google (yes this is her second time), Foursquare, and Amazon. When not in San Francisco, Holden speaks internationally about different big data technologies. 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. Outside of work she enjoys playing with fire, riding scooters, and dancing. |
|||||||||||||||
10:30 |
Coffee Break |
|||||||||||||||
10:45 |
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. 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
cats
freestyle
free-monad
live-coding
akka
functional-programming
scala
About the speaker...Michał PłachtaPolyglot software engineer specialised in developing distributed applications. Functional programming enthusiast. Loves the human component in software projects. Drinks a lot of tea. Has a blog at michalplachta.com. He currently works as team leader at Ocado Technology, where he is building actor-based software for automated warehouses. |
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 problem anymore. On the other hand, you have to embrace a little bit different approach how to design our applications. You also have to give up a lot of control we might want and the most importantly you have to use technology which just might not be ready. 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.
serverless
distributed-systems
scala
About the speaker...Petr ZapletalPetr is a Consultant who specializes in the design and implementation of highly scaleable, reactive and resilient distributed systems. He is a functional programming and open source enthusiast and has expertise in the area of big data and machine classification techniques. Petr 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. |
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? 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.
compile-time-programming
implicit-magic
scala
About the speaker...Daniel BeskinDaniel is an FP-biased developer with a thing for (esoteric) programming languages. |
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, you will discover both the basics and some more advanced usages of the library.
reactive-streams
monix
reactive
scala
About the speaker...Jacek KunickiJacek is a passionate software engineer living in the JVM land - mainly, but not limited to. He also tends to play with electronics and hardware. When sharing his knowledge, he always keeps in mind that a working example is worth a thousand words. |
||||||||||||
11:30 |
Coffee Break |
|||||||||||||||
11:45 |
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, generalised folds and unfolds with exotic names and signatures, are a further hurdle to overcome. But past this hurdle there are many rewards. 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!
matryoshka
decision-trees
functional-programming
scala
About the speaker...Zainab AliZainab is a functional programmer. She is the author of Libra and a contributor to many functional Scala libraries, such as cats and fs2. |
What does it means for our programs to be asynchronous and back pressured and why is it so important for scalable services? 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.
backpressure
scalability
akka
scala
About the speaker...Christopher BateyChristopher is a Senior Engineer at Lightbend. He is currently on the core Akka team responsible for developing Akka (https://akka.io/), Akka Http, Akka Streams, Reactive Kafka and Alpakka (https://github.com/akka/alpakka). He has previously built trading systems, online television platforms and worked extensively with Apache Cassandra. Likes: Scala, Java, the JVM, Akka, distributed databases, XP, TDD, Pairing. Dislikes: Untested software and code ownership. |
In this talk, you will explore an underappreciated tool, Church encoding, that allows you to combine the best parts of FP and OO. 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.
reactive
big-data
functional-programming
scala
About the speaker...Noel WelshNoel is a partner at Underscore, a global Scala consultancy, where he uses his expertise to develop simple and scalable systems for clients. His main professional interests are programming languages and machine learning. |
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. 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.
kotlin
jetbrains
akka
scala
About the speaker...Andrew KozlovAndrew has been a JetBrains employee since graduating with a B.Sc. degree in Computer Science. After falling in love with Scala joined the Scala plugin team. Currently is working on Akka and Dotty support in IntelliJ IDEA. Besides programming is interested in public speaking: has participated in several conferences (including ScalaDays), has been teaching programming courses for high school and university students for more than 5 years. |
||||||||||||
12:30 |
Lunch Break |
|||||||||||||||
14:00 |
Writing asynchronous code is often an uneasy fit for a language like Scala. While high-level constructs like Futures facilitate asynchronous programming, syntactic limitations often make blocking or the unchecked access of asynchronously-computed values more natural than the safer alternatives. In this talk, you will discover Impromptu, a lightweight Scala API for safely defining and executing graphs of dependent tasks, avoiding blocking and preventing access of not-yet-completed values, guaranteed the type system. You will use a combination of several advanced type-system features to encode a task's dependencies, then use these types as constraints to restrict access within a task only to the results of dependent tasks which are known to have been completed. You will further take advantage of Scala's type inference to avoid polluting the code with cumbersome type ascriptions. This gives you very lightweight and natural syntax, without blocking or unsafe access. During this talk, you will explore how Impromptu is implemented, and learn how dependent types allow the framework to be written in just 30 lines of code, and show how a similar approach may be used to concisely implement typed actors. Furthermore, you will take advantage of current research into implicit functions in Dotty to remove the small amount of remaining boilerplate from Impromptu task definitions.
programming
async
api
scala
About the speaker...Jon PrettyJon has been having fun riding the bleeding edge of Scala for over a decade, and he's not finished yet. While he's not travelling the world attending Scala conferences, or organizing Scala World, Jon spends his time working on a variety of open-source Scala libraries, and providing professional Scala training services. |
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 every continuous delivery pipeline, adding extra confidence before shipping to production. 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 BlancoEmanuele has been writing code for almost a decade, beginning with Java then slowly moving to Scala, for fun in 2011 and for profit in 2014. In 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. |
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 TensorFlow integration with a practical use case of natural language processing for automated phone support.
scio
apache-beam
tensorflow
deep-learning
api
scala
About the speaker...Vincent Van SteenbergenVincent Van Steenbergen is a Senior Data Engineer who’s been working on Big Data projects using Machine Learning (recommender system, fraud detection) and more recently Deep Learning (voice analysis, natural language processing). He regularly speaks at international conferences and meetups about Big Data tech stacks such as Scala, Akka, Spark as well as Machine Learning and Deep Learning. |
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 future of making it even faster.
scalac
compilers
performance
optimisation
scala
About the speaker...Rory GravesRory spends his life fighting to find a balance between writing ugly high performance code and beautiful maintainable code. He fights from the trenches to make software better, contributing to open source and has has worked across the entire gamut of software from building a JVM to optimising grid computing. Follow Rory on twitter. |
||||||||||||
14:45 |
Coffee Break |
|||||||||||||||
15:00 |
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 and the applications change at different speed, things get complicated: serialization protocols can help you with that! 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!
kryo
distributed-systems
scala
About the speaker...Christian UhlChristian is an expert for Search, Big Data topics and a passionate Scala developer who has been using scala in various projects throughout the last three years. He is especially interested in distributed systems, microservice architectures and always curious about how all these pieces fit together. |
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 combinators, a monadic DSL for parsing. You will use them to write an interpreter, then extend our program to compile the language into shell commands. As time permits, you will explore different paths forward for your DSL – you will learn some shortcomings of our embedded DSL and how they motivate the Free monad. You will also discover the motivation for data-types a-la-carte and recursion schemes. |
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 are building microservices or a monolithic application, its flexible architecture fits nicely into a reactive Scala stack. 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.
datomic
play
clojure
reactive
akka
functional-programming
scala
About the speaker...Peter BrachwitzPeter is a historian turned software developer. He is spending most of his days writing software in Scala. After work he enjoys exploring new programming languages and organizes the Vienna Clojure user group. |
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 people venture into the query compiler (which Stefan considers the most interesting part of Slick's implementation). I hope this talk can help to make it more accessible. Slick, SQL, Compiler 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.
compiler
sql
slick
scala
About the speaker...Stefan ZeigerStefan Zeiger is a member of the Scala compiler team at Lightbend. He was the tech lead for Slick since 2011 and the creator of its predecessor, ScalaQuery. He has been a user of Java and the JVM platform professionally since 1996, working on a diverse range of projects from web servers to GUI frameworks and programming language design, and moving on from Java to Scala since 2008. He is a frequent speaker at ScalaDays and other conferences. |
||||||||||||
15:45 |
Coffee Break |
|||||||||||||||
16:00 |
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 few decades. It’s better-written as well. During this talk, you will discover great writers’ best advice for coders: Stephen King on refactoring, Anne Rice on development hardware, Hemingway on modelling with personas, and Neil Gaiman on everything. 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.
software-craftsmanship
techniques
naming
programming
scala
About the speaker...Peter HiltonPeter Hilton is a software developer, writer, speaker, trainer, and amateur musician. His professional interests are business process management, web application development, functional design, agile software development and documentation. Peter currently consults for Signavio in Berlin, remotely from Rotterdam where he has lived since January 2000. Peter regularly presents at developer conferences and provides the occasional training course. |
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. 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.
types
scala
About the speaker...Peter MortierPeter is a well seasoned freelance developer, who still vividly remembers the birth of the JVM. Currently he's exploring the field of functional programming in scala at the Agency for roads and traffic of the Flemish government |
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. 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.
scalajs
functional-programming
dsl
api
scala
About the speaker...Luka JacobowitzLuka Jacobowitz is a Software Consultant at codecentric in Germany, focusing on functional and reactive programming. Always interested in trying new things and experimenting with the bleeding Edge. Usually spends his time contributing to various open source projects. Loves to travel and meet all the fantastic people living all around the world. He is the author of the reactive UI library and you can find his cv here and his blog under lukajcb.github.io. |
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.
ui
akka
scala
About the speaker...Andrea PeruffoAndrea Peruffo is an all-around software developer with hands-on experience in delivering any kind of software system from large scale cloud to embedded devices. |
||||||||||||
16:45 |
Coffee Break |
|||||||||||||||
17:00 |
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 that the study of functional programming is really the study of software compositionality. In this talk, you will explore the abstract interface of composition, discuss the idea of "compositional reasoning", and hopefully end up with some principles that you can apply in the design of any software system. |
|||||||||||||||
18:00 |
Don't miss the closing to a wonderful conference and a peek into 2018! About the speaker...Ariel HornAriel is one of our own here at Skills Matter and manages our training portfolio. She is always on the look out for fantastic experts to lead our cutting edge training courses and working to stay ahead of the curve for what's the next best thing in tech. After studying international affairs Stateside, she jumped the pond to further study International Business and focused on innovation metrics through local economic impact. Ariel is passionate about mentoring and digital literacy for the elderly and works with the Skills Matter Diversity and Inclusion panel. She is a geek, a gamer and a gardener. You'll probably find her volunteering at the Greenwich Royal park or equally as likely, 6 hours deep into a gaming session. |
|||||||||||||||
18:15 |
#ScalaX 2017 ends! See you in 2018! |
SoftwareMill co-founder & Scala star Adam Warski demonstrates the difference between Free Monad and the Tagless Final encoding LIVE this December!
The Scala ecosystem is moving increasingly towards using more Functional Programming constructs. You can see it clearly from the agenda of ScalaX: 2 out of 4 keynotes will cover related subjects; the conference talks touch subjects such as category theory, type systems, recursion schemes and others.
Among these functional programming-related presentations is also my attempt to cast a bit of light on two concepts which you might encounter quite often when following developments in Scala: Free Monad and the Tagless Final encoding. Both of these approaches solve the same problem, they are in fact equivalent in their expressive power. However, they differ significantly in how the code is written, which operations require boilerplate code, and which don't.
That's why in the talk, during a live-coding session, I'll try to compare these two programming styles, starting from the basic question: what problem are they solving; and showing two refactorings which will (hopefully!) demonstrate in practical terms the differences and similarities between Tagless Final and the Free Monad.
As a complement and continuation of this talk (although it's scheduled before), if you are interested in the subject, also check out Michał Płachta's session on "Freestyle, Free & Tagless"!
Hope to see you at ScalaX!
Interested in joining Adam and other experts at this year's conference? Check out the Programme Page for more info!
Software craftsman and Scala wizard Emanuele Blanco shares some thoughts on Scala eXchange and Integration Testing!
I am excited to be joining this year’s Scala eXchange where I will be sharing my thoughts on integration testing and how we can use sbt, Scalatest and Docker to write integration tests. Testing has always been one of my core interests about writing software and thanks to Docker we can write proper integration tests, not worrying about having a dedicated environment to run our test against or risking testing our code against a dependency that doesn’t match what we run in production. I’ve been in situations in the past when problems were caught way too late during the software development cycle, and if this is something that happened to you as well then I’ll show you how can you avoid this problem! I plan to make a small project public on GitHub after the talk.
This is my third Scala eXchange and I’ve always left the conference with useful insights. I’ve always liked the fact that Scala eXchange puts under the same roof the two main approaches that you can follow while writing Scala: functional and object oriented. As a former Java developer, I’ve been mostly comfortable writing code in the latter style but thanks to the community and the events I’ve attended I discovered how a more functional style can help you writing better software. This year talks are following this path, talking about a broad range of subjects such as Spark, Akka, Recursion Schemes, Category Theory, ScalaFix… definitely a lot to absorb in 2 days, but that’s the fun part!
Last but not least, one of the most invaluable things you get out at events such as this is the networking: talking to people, understanding what they think about the problems we face as developers every day and exchange opinions. Don’t be shy and go talk to people you haven’t met — that’s how you’ll probably make the most of it. You’ll never leave such an event without having learnt at least one thing you can start applying in your day to day job. And I’m sure this year will be the same. See you there!
Want to see what else is happening at Scala eXchange '17? Head to the Programme Page for more info!
As the Scala community goes from strength-to-strength, Functional Programming ace Daniel Beskin tells us what he'll be bringing to this year's Scala eXchange!
When I was first exposed to Scala a while back, one of the most striking features of the community and its ecosystem was how much drive people had to learn and explore new ideas, be it the frontiers of Functional Programming, the principles of building highly scalable software, or just pushing the boundaries of the Scala language itself. Fast forward a few years, and a quick glance at this year's ScalaX's programme shows that the very same drive is still there, as strong as ever.
In my talk, I aim to contribute something to the last topic. We will explore what is one of Scala's most powerful (and sometimes feared) features – implicits. By shedding some light on a very neat analogy between implicits and the Prolog logic programming language, I will try to demonstrate how we can leverage the former to make the compiler do some heavy work for us. As we'll hopefully see, the Prolog analogy will make code relying on implicits more approachable and easier to reason about. With this newfound power in hand, we will be able to achieve some practically useful results (not compile-time Sudoku!), either when writing our own code, or when trying to grok some complicated code in the wider ecosystem.
Keep on learning, and see you at ScalaX.
Scala at Morgan Stanley
Morgan Stanley are sponsoring ScalaX this year! In preparation for the conference the team have created a short video outlining “Scala at Morgan Stanley”. Please come to their stand to meet some of their engineers throughout the conference.
You can [download the video here]
Meet Jesus López González and Stateless in ScalaX!
In a few weeks, our team will travel to London to attend Scala eXchange 2017. We’re really excited about it, because we’ll be introducing so-called optic algebras in a lightning talk.
Optic algebras emerge to overcome existing limitations on the standing techniques to handle the data layer of real-world applications. On the one hand, optics support rich patterns to manipulate data, but they’re restricted to immutable data structures. On the other hand, algebraic abstractions such as MonadState provide the means to work with general settings (relational databases, microservices, etc.), but their associated patterns are really poor. Optic algebras attempt to supply rich patterns while remaining general, combining therefore the best of both worlds.
We’ll take this opportunity to premiere our new Scala library, which we’ve affectionately named Stateless. This library exploits the notion of optic algebra and aims at making it easier to deal with the state of your applications. In this sense, you could implement the data layer of your application and its business logic once and for all, using the domain specific language provided by Stateless, and later interpret it into particular state-based technologies. This library thus complements other open source efforts of Habla Computing (our functional architecture studio) such as puretest, to contribute to the functional ecosystem of Scala.
We look forward to seeing you in #scalax!
Want to join Jesus and other Scala stars at this year's conference? Head to the Programme Page for more info!
Business Design Centre
Situated in Islington, one of London’s most vibrant areas, the BDC is within walking distance of Angel tube station and relatively close to Kings Cross, Farringdon, Liverpool Street and Euston stations. Conveniently located outside the congestion charge zone, the venue also benefits from on-site car parking, an adjacent Hilton Hotel, and has disabled access.

Business Design Centre
52 Upper Street, Islington, London, N1 0QH, GB
View details, travel and nearby hotels
Get Involved
Would you like to help us facilitate a great conference? Help us set up the conference spaces, introduce talks and speakers, field Q&A questions with mics, or support some of the workshops and hacks we've got in store? Email us at conferences@skillsmatter.com and we will put your name down as a volunteer for Scala eXchange 2017! Shifts and detailed info will be confirmed closer to the conference.
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.
To carry out this endeavour, Skills Matter will be sponsoring 50 complimentary tickets to our upcoming Scala eXchange conference for all those who feel like they would learn from this event but would not be able to join in otherwise.
To apply please fill in this form:
Highlights from #ScalaX 2016!
Don't miss these Special Moments with the experts from #ScalaX 2017
Community Pages
Guru99 on What is Apache Cassandra?

Extend the excitement of ScalaX with ScalaX2gether!

Eager to put into practice what you've learnt at this year's Scala eXchange? Want to further socialise with members of the Scala community? After a day of free, fun hands-on Scala activities? Then dive on into ScalaX2gether! A power packed Saturday (16th December) following on straight after the conference.
Join fellow ScalaX attendees and some of the most talented coders and experts, for our new day-long Scala2gether event and create something amazing together!
Participation is free for registered attendees. Head here to register.
Lightbend Akka for Scala - Expert
Thursday 7th December 2017
Are you ready to learn about how to develop the pinnacle of scalable reactive applications? Join this two-day advanced course with Trond Bjerkestrand to become confident about building distributed reactive applications using Akka and Scala!
Advanced Stairway to Scala by Bill Venners and Dick Wall
Monday 11th - Wednesday 13th December 2017
Are you an experienced Scala developer or an API and Library programmer, wanting to up your Scala game? Want to learn the advanced aspects of the Scala language and core libraries? Then come along to Advanced Stairway to Scala 2017, a special 3-day Tutorial by Dick Wall and Bill Venners to hone your skills!
Lightbend Scala Language - Professional
Tuesday 12th - Wednesday 13th December 2017
Would you like to learn functional programming in Scala? Join this intensive, hands-on two-day course with Trond Bjerkestrand and gain a solid understanding of the fundamentals of the Scala language, the tooling, and the development process!
Compile Scala Faster with Iulian Dragos and Mirco Dotta
13th December 2017
Are you an advanced Scala developer looking to speed things up? If so, this course is for you! Join Iulian and Mirco on this one day dive into the Scala compiler!
ScalaX2gether Community Day
Saturday 16th December 2017
The Community Day will follow 2 power packed days at Scala eXchange!
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.
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
- More TBC soon!
Whether you are seeking to improve visibility of your tools, devices or projects, or simply would like to support Scala eXchange's passionate community through your engagement, our sponsorship team will be able to help you select the best sponsorship package for you! Email sponsors@skillsmatter.com or phone 0207 183 9040.
Available Packages
-
- 256-BIT SPONSORSHIP (EXCLUSIVE)
Engagement Benefits
- Exhibitor booth (6m x 3m) in central conference break-out area
- 8 free conference tickets, worth £895 each (subject to availability) which you can gift to your clients, your engineering team or members of Computing At School (teachers learning computing to teach the new National Computing Curriculum)
- 8 free exhibitor passes
- 6 of your #scalax related tweets retweeted by @skillsmatter before or during the conference
- 50 conference party drink tokens to give away at your booth
- 3 gifts or printed items in swag bags
- 4 places at speakers dinner
- Your 300-word news item, interview or blog post plus visual announced on conference sneak preview pages and in social media
- Your 140 char post-conference News Item & hotlinked URL shared in post-conference email shared with all attendees
Brand Visibility Benefits
Your (extra large) logo displayed on:
- ScalaX 2017 Sponsor Pages (size relative to sponsorship level)
- Your dedicated 200-word Company Profile with visual on skillsmatter.com
- All ScalaX 2017 Conference Pages (at bottom of page)
- ScalaX Bytes Meetup pages, which feature monthly community events leading up to the conference
- In pre- and post conference attendee news update emails
- Name badges worn by every attendee
- Printed conference programme booklet
- Main Stage re-Boards and on banners throughout the venue
- Conference Closing Speech Sponsor Thank You Slide
- Conference swag bags
- Lanyards worn by every attendee
- Conference t-shirt
Featured at the ScalaX 2017 Party
- On party tickets
- On beer mats
- On party banners
-
- 128-BIT SPONSORSHIP
Engagement Benefits
- Exhibitor booth (4.5m x 2.5m) in central conference break-out area
- 6 free conference tickets, worth £895 each (subject to availability) which you can gift to your clients, your engineering team or members of Computing At School (teachers learning computing to teach the new National Computing Curriculum)
- 6 free exhibitor passes
- 4 of your #scalax related tweets retweeted by @skillsmatter before or during the conference
- 25 conference party drink tokens to give away at your booth
- 2 gifts or printed items in swag bags
- 2 places at speakers dinner
- Your 300-word news item, interview or blog post plus visual announced on conference sneak preview pages and in social media
- Your 140 char post-conference News Item & hotlinked URL shared in post-conference email shared with all attendees
Brand Visibility Benefits
Your (large) logo displayed on:
- ScalaX 2017 Sponsor Pages (size relative to sponsorship level)
- Your dedicated 200-word Company Profile with visual on skillsmatter.com
- All ScalaX 2017 Conference Pages (at bottom of page)
- ScalaX Bytes Meetup pages, which feature monthly community events leading up to the conference
- In pre- and post conference attendee news update emails
- Name badges worn by every attendee
- Printed conference programme booklet
- Main Stage re-Boards and on banners throughout the venue
- Conference Closing Speech Sponsor Thank You Slide
- Conference swag bags
Featured at the ScalaX 2017 Party
- On party tickets
- On beer mats
-
- 64-BIT SPONSORSHIP
Engagement Benefits
- Exhibitor booth (3m x 1.5m) in central conference break-out area
- 4 free conference tickets, worth £895 each (subject to availability) which you can gift to your clients, your engineering team or members of Computing At School (teachers learning computing to teach the new National Computing Curriculum)
- 4 free exhibitor passes
- 2 of your #scalax related tweets retweeted by @skillsmatter before or during the conference
- 10 conference party drink tokens to give away at your booth
- 1 gift or printed item in swag bags
- Your 300-word news item, interview or blog post plus visual announced on conference sneak preview pages and in social media
- Your 140 char post-conference News Item & hotlinked URL shared in post-conference email shared with all attendees
Brand Visibility Benefits
Your (medium size) logo displayed on:
- ScalaX 2017 Sponsor Pages (size relative to sponsorship level)
- Your dedicated 200-word Company Profile with visual on skillsmatter.com
- All ScalaX 2017 Conference Pages (at bottom of page)
- ScalaX Bytes Meetup pages, which feature monthly community events leading up to the conference
- In pre- and post conference attendee news update emails
- Name badges worn by every attendee
- Printed conference programme booklet
- Main Stage re-Boards and on banners throughout the venue
- Conference Closing Speech Sponsor Thank You Slide
-
- 32-BIT SPONSORSHIP
Engagement Benefits
- Exhibitor booth (2m x 1.5m) in central conference break-out area
- 2 free conference tickets, worth £895 each (subject to availability) which you can gift to your clients, your engineering team or members of Computing At School (teachers learning computing to teach the new National Computing Curriculum)
- 2 free exhibitor passes
- 1 of your #scalax related tweets retweeted by @skillsmatter before or during the conference
- 1 gift or printed item in swag bags
Brand Visibility Benefits
Your (small) logo displayed on:
- ScalaX 2017 Sponsor Pages (size relative to sponsorship level)
- Your dedicated 200-word Company Profile with visual on skillsmatter.com
- All ScalaX 2017 Conference Pages (at bottom of page)
- Name badges worn by every attendee
- Printed conference programme booklet
- Main Stage re-Boards and on banners throughout the venue
- Conference Closing Speech Sponsor Thank You Slide
-
- 16-BIT SPONSORSHIP
Engagement Benefits
- Exhibitor booth (1m x 1m) in central conference break-out area
- 1 free exhibitor pass
- 1 gift or printed item in swag bags
Brand Visibility Benefits
Your (extra small) logo displayed on:
- ScalaX 2017 Sponsor Pages (size relative to sponsorship level)
- Your dedicated 200-word Company Profile with visual on skillsmatter.com
- All ScalaX 2017 Conference Pages (at bottom of page)
- Name badges worn by every attendee
- Printed conference programme booklet
- Main Stage re-Boards and on banners throughout the venue
To discuss sponsorship opportunities please contact the team:
- Phone: +44 (0) 207 183 9040
- Email: sponsors@skillsmatter.com
Blog posts
Alice Lloyd, of LinuxRecruit and the Scala Central meetup, blogged about ScalaX 2016
Dave Gurnell reveals which talks Underscore will be looking out for at ScalaX 2017!
Scala Exchange is only a month away and excitement is building at Underscore HQ. We thought we’d write a series of posts about our involvement with the conference. Watch this space over the coming weeks for announcements and Scalax-related content, and subscribe to the newsletter to take advantage of some upcoming promotions and discounts.
We have an amazing programme this year (admittedly I’m biased—I helped select it). Our four keynotes—Bartosz Milewski, Debasish Ghosh, Holden Karau, and Rúnar Bjarnasson—all speak for themselves, so here are some of my personal picks from the rest of the programme.
You can find the complete schedule on the Scala Exchange website where you can grab tickets if you haven’t already done so. We’ll also have some discounts available in our December newsletter, out next week.
We’re also running a Cats training course on the 12th and 13th December right before the conference. Book your place now on our Eventbrite page.
Gabriele Petronella – Move Fast and Fix Things
Beginner friendly
Scalafix has been getting a lot of attention recently. Initially intended as a tool to help migrate between Scala versions, it is now a fully fledged migration and refactoring tool that has been picked up by several open source libraries (most notably Cats) as a way to automate upgrades through breaking API changes. You can even use it for your own refactorings!
Heiko Seeberger – Farewell Any => Unit, Welcome Akka Typed!
Beginner friendly
I have a few criticisms of actors but chief among them is the lack of type safety. It’s hard to think of a less precise type than Any => Unit, and this is unfortunately the type you get in the receive loop of an actor… until now. Akka Typed is here to save the day, so come and speak to Heiko and find out how to sprinkle your actor systems with a little type safety.
Noel Markham – Creating a Physics Simulation with Scala.js
Beginner friendly
I love graphics, physics, and front end development. The quick visual feedback loop is perfect for creative, fun programming. Scala.js provides a great way to to all of this goodness from a language that puts statically typed functional programming first. At Scala Exchange, Noel will be showing us the power of Scala.js by live coding a simple physics demo from scratch, right in front of our eyes. What’s not to like?
Peter Hilton – How to Name Things: The Hardest Problem in Programming
Beginner friendly
Peter is a great speaker who brings fascinating topics out of left field and turns them into compelling and enlightening talks. At Scala Exchange he’ll be comparing software development to writing, showing us how we can be better developers by following the advice set out for us by authors like Stephen King and Neil Gaiman. I’m intrigued by this—one to attend, for sure!
These are just four of the 40+ talks on the programme. We’re super excited to have Gabriele, Heiko, Noel, and Peter with us, and we’re looking forward to seeing you in Islington, London on 14th December.
-
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...
scalax keynote scala -
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.
ui akka scala -
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.
kotlin jetbrains akka scala -
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...
serverless distributed-systems scala -
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...
kryo distributed-systems scala -
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-streams monix reactive scala -
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...
tagless monads free-monads functional-programming scala -
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.
typelevel typeclass hilst induction scala -
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 implicit-magic scala -
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.
software-development cats freestyle free-monad live-coding akka functional-programming scala -
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...
akka scala -
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...
javascript physics 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.
clean-code type-safety adt microservices scala -
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).
asynchronous-programming dddesign functional-programming scala -
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.
concurrency distributed-systems akka scala -
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.
big-data reactive functional-programming scala -
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...
scio apache-beam tensorflow deep-learning api scala -
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...
shapeless type-classes thrift scala -
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?
-
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...
compiler scala -
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...
scalac compilers optimisation performance scala -
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...
-
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...
software-craftsmanship techniques naming programming scala -
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?
backpressure scalability akka scala -
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,...
runtime-exception scala -
2
Automatic Parallelisation and Batching of Scala Code
Featuring James Belsey and Gjeta Gjyshinca
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...
parallelism scala -
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...
sql slick compiler scala -
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 -
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.
tagless-final microservices rpc free-monads 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...
adts dsl 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 datomic play clojure akka functional-programming scala -
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....
category-theory constructive-logic type-system mathematics maths math data types scalax scala -
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: 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 functional-programming types api -
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.
dsl scalajs functional-programming api scala -
Lightning Talk - Control the Chaos
Featuring Piotr Śliwa
Akka doesn't guarantee message delivery, especially for remoting or persistent actors.
akka testing -
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.
plugins sbt -
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.
-
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 - 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...
-
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.
performance compiler scala -
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!
tdd micro-services functional exception-handling scala -
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...
cognitive-bias code-quality psychology -
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.
-
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 decision-trees functional-programming scala -
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...
stateless composition optics -
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.
type-theory compile-time-verification dotty phantom-types -
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.
types scala -
Opening & Welcome to ScalaX 2017!
Featuring Dave Gurnell
Join us as we welcome you to a new year of Scala eXchange!
-
ScalaX 2017 Wrap Up Presentation
Featuring Ariel Horn
Don't miss the closing to a wonderful conference and a peek into 2018!
-
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?
types scala -
Impromptu: Using Dependent Types to Build a Better API for Async Call Graphs
Featuring Jon Pretty
Writing asynchronous code is often an uneasy fit for a language like Scala. While high-level constructs like Futures facilitate asynchronous programming, syntactic limitations often make blocking or the unchecked access of asynchronously-computed values more natural than the safer alternatives.
programming async api scala -
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
-
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.
scala-test devops microservices hack hackathon scalax scala functional-programming -
Scala eXchange London 2018
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-web bigdata scala-test devops microservices scala-ide reactive scala functional-programming -
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.
community hack scalax scala -
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...
hack hackathon unconference typelevel underscore fp scalaxhack scalax scala functional-programming -
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...
machine-learning deep-learning play lift reactive-programming scalax akka scala functional-programming -
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.
scalaxhack scalaxhack-day scala -
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-x scala -
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.
play lift reactive-programming akka scala functional-programming -
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.
play lift big-data reactive-programming akka scala functional-programming -
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!
playframework spray scalatest scala-collections reactive-programming scala-macros scalax akka scala 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
akka typesafe scala -
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