Long Talks (45 minutes)
Have you solved a Rubik’s Cube Yet?
In five minutes, I’ll teach everything you need to know to solve it. Really! Then, with the easy stuff out of the way, we’ll dive into the math behind the solution, teach it to a computer, and demonstrate the result with a live solve on a Bluetooth Rubik’s Cube.
The Rubik’s Cube is a famous puzzle that’s notorious for being difficult to solve. In this talk, we’ll show how math can be used to simplify the problem to the point that a human can solve it intuitively or write a clear and concise program do so.
We’ll begin by covering some basic Group Theory concepts, and demonstrate how these can be used to model a Rubik’s Cube in a simple way that lends itself well to analysis. Examples will be demonstrated using a Bluetooth enabled Rubik’s Cube that allows for automatic analysis on the big screen while preserving speed and flexibility. Next, we’ll code up a solution that directly takes advantage of this mathematical structure. For this we’ll leverage an existing scala library for computational group theory. Finally, we’ll test this program with a live solve on our Bluetooth Rubik’s Cube, so we can analyze the produced solution in a step-by-step fashion.
I started work on Fury on my flight home from NE Scala 2018, so this year’s symposium marks an important anniversary for Fury, as it approaches a first release.
Fury is a radical new build tool for developing software written in Scala and other JVM languages. It starts with a completely blank canvas and not only takes on the challenges of developing maintainable and composable build definitions, but has bold aspirations to shake up the way we publish and distribute software, too: Fury aims to make binary compatibility issues a thing of the past.
This talk will be a rapid, but practical demonstration of using Fury. You will learn how easy it is to create builds for existing Scala projects and for new ones. You will discover how fast, intuitive and responsive Fury’s user interface is, and will get to see Fury’s out-of-the-box support for common (but traditionally difficult) build tasks like code generation, benchmarking and publishing.
Medium Talks (30 minutes)
Scala’s tooling experience has improved and now there’s an increasing number of tools to choose from. We can feel the hype but might not be fully aware of tools that exists, alternatives, trade offs or even recent efforts such as LSP initiative. This talk’s goal is to create such tooling awareness.
We are going to explore and compare some build tools with special focus on LSP/BSP implementations, IDEs and text editor’s support. For the sake of empower audience’s judgement about the tools that could suit better for their particular needs this talk aims to get attendees familiar with terms like SemanticDB, Metals, Bloop, SBT, Pants, Bazel, Ensime, IntelliJ IDE, Scala IDE, Dotty IDE and other honorific mentions.
You may have heard of Free Monads, but there are other “Free” structures. Another useful type are Free Boolean Algebras, which give us Boolean logic for a set of primitives “for free”. We’ll derive the Free Boolean Algebra and show how you can use it in your programs.
FS3 is the code name for the next major version of FS2. In this talk, we’ll look at how pull based streaming may be implemented in FS3 and how various API decisions guide the design process. As a result, I hope a few will be inspired to help make FS3 reality.
The Functional Streams for Scala (FS2) library provides core infrastructure for many critical components of the open source Scala ecosystem, including libraries like http4s and doobie. In this talk, we’ll look at a possible future direction for FS2 (code named FS3), focused on replacing the internal pseudo-Free interpreter with a more direct encoding. We’ll also look at how various API decisions constrain the solution space. Attendees will leave with a better understanding of the FS2 API and hopefully, a few will be inspired to help work on FS3.
Lightning Talks (15 minutes)
Monad, Monoid, Functor, Semigroup. What’s the difference!? Become a type class master with these handy visual aids! Learn their powers and the relationships between them. Gotta catch ‘em all!
Learning the type classes from Cats and Scalaz can be difficult without a guide. By presenting the most well-known type classes visually, we can more easily understand their capabilities and the relationship between them.