ScalaCon is a collaborative project brought to you by the folks behind Scala eXchange and Scala Days!
Join us for a conference of expert talks, networking opportunities, virtual sponsor booths, and a safe space for talking about our favorite language, it's past, present, and future.
For complete details on ScalaCon, please visit the project's microsite at scalacon.org
Please note: This conference is a third party event. Premium Membership benefits do not apply.
Excited? Share it!
Day 1: 4 October
Keynote Meetup and ScalaCon Kickoff Live in London
Track | Main Track | |||
19:00
Invalid Time
Invalid Time
|
KEYNOTE
Scala lets us write beautifully simple code. It incurs very low boilerplate and does not restrict expression in arbitrary ways. Scala itself is also quite a simple language, with few constructs that compose well. On the other hand, Scala is often described as difficult. I believe this criticism is not so much directed at the language itself but at certain libraries, frameworks and applications written in Scala. In my talk I want to raise this problem, and start a discussion how the Scala ecosystem can do better.
software-development
scala
About the speaker...Martin OderskyMore generally, Martin is interested in programming languages and methods, in particular how object-oriented and functional programming can be made to work seamlessly together. He believes is that the two paradigms are two sides of the same coin and should be unified as much as possible. He was named an ACM fellow for his achievements in this area. |
|||
20:00
Invalid Time
Invalid Time
|
Live Q&A |
|||
20:30
Invalid Time
Invalid Time
|
End of Livestream |
Day 2: 5 October
ScalaCon Live Online
Track | Main Track | |||
15:50
Invalid Time
Invalid Time
|
Welcome and Opening Remarks |
|||
16:00
Invalid Time
Invalid Time
|
KEYNOTE
Today's large-scale algorithms, especially recommendation systems, play a major role in the spread of disinformation and hate speech. Yet, they are increasingly opaque, despite repeated scandals in big tech companies. In this talk, after underlining the danger they now represent for national security and global peace, I will present Tournesol, an open-source AGPL platform to collaboratively design a public utility content recommendation algorithm. I will stress in particular the mechanisms that were designed to secure the platform. I will then conclude by stressing the urgent importance of security, especially in the current geopolitical context. |
|||
16:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
16:50
Invalid Time
Invalid Time
|
Break |
|||
17:00
Invalid Time
Invalid Time
|
Closures, or lambda expressions, are an essential language feature to work productively with popular data processing engines like Apache Spark and Flink, and they enable functional programming (FP), a style of programming that is gaining popularity for composable programming with effects, among others. However, more and more use cases in parallel and distributed programming are testing the limits of the flexibility of closures. For example, the requirement for closures to be serializable is a common source of errors when developing data processing or streaming applications. In a concurrent setting, for example, when programming with futures and promises, closures must be used with great care in order to prevent safety hazards like race conditions. In this talk you will learn how to spot potentially unsafe code using closures, how to write safer closure-using code, and how to use newly developed library components to increase the flexibility and safety of closures in Scala.
scala3
scala
distributed-programming
concurrency
serialization
language-design
software-development
About the speaker...Philipp HallerPhilipp Haller is an Associate Professor in the School of Electrical Engineering and Computer Science at KTH Royal Institute of Technology in Stockholm, Sweden. He is co-author of Scala's async/await extension for asynchronous programming, and one of the lead designers of Scala's futures library. Main author of the book "Actors in Scala," he created Scala's first widely-used actor library. Dr. Haller was part of the team that received the ACM SIGPLAN Programming Languages Software Award in 2019 for the development of the Scala programming language. He is also one of the founders of the Software Development Academy at KTH, a 3-month accelerated training program in software development, which was selected finalist for the Tech Skills and Talent Award of IDG Tech Awards Sweden in 2022. Dr. Haller received a Ph.D. in Computer Science from EPFL, Switzerland, in 2010 and a Diplom-Informatiker degree from Karlsruhe Institute of Technology, Germany, in 2006. |
|||
17:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
17:50
Invalid Time
Invalid Time
|
Break |
|||
18:00
Invalid Time
Invalid Time
|
This talk would address newcomers and seasoned Scala developers and will show new ways to explore and enjoy our language.
scala3
software-development
scala
About the speaker...Krzysztof RomanowskiKrzysztof is Head of Dev & Scala Tooling @ Virtuslab where he has spent endless hours debugging and fixing Scala IDE, SBT, IntelliJ, and even the Scala compiler itself. For over 5 years he has been creating tooling for projects containing millions of lines of lines of Scala source code. Organizer of sphere.it conference and the Kotlin and Scala user groups in Kraków. |
|||
18:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
18:50
Invalid Time
Invalid Time
|
Mid-Day Break |
|||
20:00
Invalid Time
Invalid Time
|
When testing Scala language it’s almost impossible to test all corner cases and combinations of input - it’s simply too flexible and complex. Even with thousands of tests, eventually, some users would be able to break it. In such a case, how the Scala maintainers can detect defects in the compiler early and limit the number of bugs? If they only had some almost infinite amount of test cases… Wait a minute, from the compiler perspective, each Scala source file is a complete test case - they’re just waiting to be used! Scala 3 Community Build is a tool used by the compiler team to test new versions of Scala against open-source libraries. During the talk, we will discuss how it is used to detect regressions in the compiler, and how it is managing the builds to avoid deadlocks and cycles between library dependencies.
tooling
community-build
scala
compiler
software-development
About the speaker...Wojciech MazurI’m an engineer in the tooling space of VirtusLab. Currently, as a part of the Scala 3 compiler team and in collaboration with LAMP, I’m trying to improve Scala each day. I’m also the main maintainer of Scala Native and a former community member of the Scala Center. |
|||
20:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
20:50
Invalid Time
Invalid Time
|
Break |
|||
21:00
Invalid Time
Invalid Time
|
“Fetchless” is a total reinvention of the famous Scala “Fetch” library from 47 Degrees. Like “Fetch”, “Fetchless” helps users parallelize, cache, and batch multiple requests together from multiple sources to make your programs faster. This new version is redesigned from the ground-up to be more flexible and familiar to modern Scala users, while also being over an order of magnitude faster in worst-case scenarios. The new multi-layered design allows you to have as little or as much control over individual requests as you’d like, such as adding your own functionality around the edges or even opting out of laziness or deduplication entirely to see massive performance gains. “Fetchless” also supports data streaming with FS2, debug logging, and comes with multiple integrations for popular Scala libraries out of the box.
scala
fetch
software-development
About the speaker...Ryan PetersI am a Senior Scala Engineer at 47 Degrees. I love Scala, pure FP, and video games. I’m working on building event-driven systems both for fun and on-the-clock, and I occasionally enjoy contributing to other OSS projects and hanging out on their Gitter channels. When I’m not coding, I’m probably replaying Super Metroid for the fiftieth time, working on my annoyingly large video game backlog, or figuring out how to do this newfangled “Twitch Streaming” thing. |
|||
21:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
21:50
Invalid Time
Invalid Time
|
Break |
|||
22:00
Invalid Time
Invalid Time
|
In this presentation, I’ll go through the skeleton we use while creating new web applications in Scala/Scala.js, explaining the foundations and the architecture for it. Show casing that is can be very practical to create Scala/Scala.js web applications. Our skeleton tries to stick to practical patterns, adopting pure functional programming when it makes sense, as well as being pragmatic while writing automated tests. If you have ever wondered how we can onboard juniors to the Scala/Scala.js ecosystem, I have wonderful results with this skeleton. Even if you do not use the skeleton, there are very good parts from it that you can likely adopt in your existing project.
postgresql
play-framework
scalabily-typed
slinky
react
software-development
scala.js
web-application
About the speaker...Alexis HernandezAlexis is an experienced Scala engineer who has been openly pushing the Scala/Scala.js adoptions, he has worked with big and small companies as a Developer, Team Lead, Architect. Alexis has also been contributing to the Scala open source ecosystem for many years now. Right now, Alexis has a Scala consultancy company (https://wiringbits.net), helping companies to succeed with Scala, as well as onboarding talented juniors to the Scala ecosystem. |
|||
22:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
22:50
Invalid Time
Invalid Time
|
Break |
|||
23:00
Invalid Time
Invalid Time
|
On a growing number of campuses, data science programs offer introductory courses that include a non-trivial amount of programming. The content of such courses overlaps that of traditional computer science introductory courses, but neither course subsumes the other. This talk argues that a common introductory course that covers both data science and data structures supports students and provides curricular flexibility, while also bringing social impacts of computing into the early curriculum. We'll discuss both the design and implementation of such a course, with particular focus on programming language features that support it.
software-development
data
data-centric
About the speaker...Kathi FislerKathi Fisler is a Research Professor of Computer Science at Brown University and co-director of Bootstrap, an outreach program that integrates computing and data science into existing classes in middle- and high-schools. After an initial career in formal methods, she now focuses her research on computing education at the pre-college and college levels. She's currently working on blending data science and computer science into "Data-Centric Computing", a new model for introductory computing curricula that leverages many features of functional programming. |
|||
23:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
23:50
Invalid Time
Invalid Time
|
End |
Day 3: 6 October
ScalaCon Live Online
Track | Main Track | |||
12:50
Invalid Time
Invalid Time
|
Welcome & Opening Remarks |
|||
13:00
Invalid Time
Invalid Time
|
In Scala 3, you can do more with types by the virtue of match types and type-level operations, which increase the design space for compile-time verification. For example, operations for type-level arithmetic are available which can be used to verify the correct dimensionality of matrices in machine learning projects.
software-development
type-level-programming
scala
scala-3
About the speaker...Matt BovelMatt Bovel is a PhD student and doctoral assistant at the Swiss Federal Institute of Technology in Lausanne (EPFL), in the LAMP lab (aka the Scala team). He wants to make it easier and fun to write robust bug-free programs using type-level programming, dependent types and refinement types. He holds a Master in Computer Science from EPFL and previously was an intern at Oracle Labs where he worked on GraalVM, Truffle and GraalWasm. |
|||
13:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
13:50
Invalid Time
Invalid Time
|
Break |
|||
14:00
Invalid Time
Invalid Time
|
In object oriented languages one can compare instances of objects either by their identity or by inspecting their internal structure and looking at the values of their members. The Scala compiler can analogically compare types using two different strategies called nominal and structural typing respectively. Even though nominal typing is used most of the time to guarantee type safety of Scala programs there are situations when it might be too constraining and decrease developers’ efficiency. In some cases this might even lead programmers to falling back to manual type casts or accessing members of a data type by their labels using runtime strings even though they’re known at compile time. Luckily for Scala coders trapped between Scylla and Charybdis, structural typing comes to the rescue as a decent compromise between these two extremes. I will open my talk by showing the differences between nominal and structural typing and examining their relation to duck typing in the context of a statically typed language like Scala. I will also explain the role of type refinements in Scala’s type system. Next, I will introduce Scala 3’s Selectable trait and its older sibling Dynamic. I will delineate how they’re handled by the compiler and how they can be composed with other features of Scala, including its new metaprogramming API. Concludingly, I will demonstrate some real world use cases where the mentioned mechanisms can be used to make your code concise and expressive, yet type-safe. I will also mention some situations where you should hold your horses and consider some alternative solutions.
software-development
scala-3
scala
About the speaker...Michał PałkaKeen linguist, whose passion for natural languages made him fall in love with programming. Since the beginning of his 7-year-long career still faithful to Scala and to VirtusLab, where he works developing the compiler of his beloved language. |
|||
14:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
14:50
Invalid Time
Invalid Time
|
Break |
|||
15:00
Invalid Time
Invalid Time
|
What constitutes a healthy community? How do we get there and who needs to participate to make it a reality? Where does Scala community stand now? And how does Scala Center's "Scala governance project" fit in all of this? While exploring these questions, the authors encourage attendees to take action and join the movement, taking away three points
software-development
scala
About the speakers...Adam GoodmanAdam Goodman directs Northwestern University's Center for Leadership and is a Clinical Professor in the McCormick School of Engineering & Applied Science. He works with senior leaders in industry as well as with faculty and students on leadership and teamwork, focusing on learning in real world contexts. An active consultant today and for over 25 years, he has advised over 200 CEOs, senior officers, executive teams and boards of directors and given hundreds of invited speeches and workshops around the world. His work with open source communities includes Drupal, FreeBSD, Open Source Initiative, and Scala. Darja JovanovicThe Scala Center executive director, recognisable mostly for leading the SIP 2 and forming SIP 3, coordinating Scala 3 release, creating purposeful community events, and ensuring wide support for Scala Center's mission “For open source. For education.” In short, Darja is a Scala community enthusiast who’s committed to getting things done! |
|||
15:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
15:50
Invalid Time
Invalid Time
|
Break |
|||
16:00
Invalid Time
Invalid Time
|
Initiated by VirtusLab in 2021, Scala CLI aims at becoming the new scala command. It’s straightforward to install, has almost no dependencies, and allows users to write and run Scala code on the JVM, from javascript, and natively, with full IDE support via Metals. Scala CLI is a great tool for experimenting with new libraries, or for scripting in Scala. Its new publishing support, and its existing cross-compilation support, make it the perfect tool to write, compile, test, and publish micro-libraries. We’ll show that its publishing support makes it much easier than today’s Scala build tools to write cross-platform small libraries, and setup publishing to Maven Central, automating many of the steps users do manually for now.
software-development
scala-3
scala
About the speaker...Alexandre ArchambaultAlexandre has been doing Scala professionally since 2013, in finance, ad tech, then full time in open source, focusing on Scala tooling. I’m the main author of coursier, Almond, and more recently Scala CLI, developed with VirtusLab. I also contributed to shapeless, Ammonite, and have smaller contributions in numerous other Scala projects. Follow Alexandre on twitter. |
|||
16:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
16:50
Invalid Time
Invalid Time
|
Mid-Day Break |
|||
18:00
Invalid Time
Invalid Time
|
The Scala community is not only made of frameworks and libraries, job offers and educational videos. The Scala community is made of people, even though after more than two years of remote work and virtual meetups we might have forgotten about that a bit. So here it is: a talk to remind us of that the community is a community of people. Ambitious, hard-working, hopeful, imaginative, affectionate, but also sometimes stressed out, and fearful what the future will bring. Team builders and lone wolves. Today we want to tell you about the Scala people in Ukraine. Who and when started working with Scala. What events were the first. What companies saw its potential and started hiring Scala developers. But also where are they now and what do they dream of. We will try to answer the question how can we help the Ukrainian Scala community to survive and grow again after the war, but we also want to convince you that this is an opportunity for yourselves - to meet new people, to start new projects, to make friends.
software-development
ukraine
community
scala
About the speakers...Roksolana DiachukRoksolana works as a Big Data Engineer at Captify. She is a speaker at technical conferences and meetups, one of the Women Who Code Kyiv leads. She is passionate about Big Data, Scala, and Kubernetes. Her hobbies include building technical topics around fairytales and discovering new cities. Maciej GorywodaI’m working in the Scala plugin team at JetBrains, in Berlin. My hobby projects involve making Android apps and educational YouTube videos. Here to convince you that you don’t need Category Theory. |
|||
18:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
18:50
Invalid Time
Invalid Time
|
Break |
|||
19:00
Invalid Time
Invalid Time
|
With the recent release of Scala 3, we’ll see an increasing number of projects adding support for it alongside a couple of older versions like 2.12 and 2.13. Apache Kafka represents an interesting use case, since it’s written in both Java and Scala, with the core module being almost completely written in Scala and currently supporting Scala 2.12 and 2.13. Adding the support for Scala 3 is a required task if we want to avoid a complete rewrite. We took the challenge and this session explores our migration attempt, starting by stating the main problems unearthed while proofing how complicated the migration would be. The talk will then cover the missing pieces in the ecosystem, like the interoperability between Java and Scala, or differences in bytecode generation and suggest how the community can help. Why did those problems occur and what does it need to change to have even smoother migrations in the future? Check out our experience and learn how this can be extrapolated to other mixed Java/Scala OSS projects.
software-development
interoperability
java
dotty
scala
oss
migration
kafka
scala-3
About the speaker...Josep PratJosep Prat is a Open Source Software Manager at Aiven and is passionate about Open Source Technologies. With a strong background in Scala and distributed systems, he contributes to several Open Source Projects like Kafka and Akka, and is a committer for Akka HTTP. In his spare time, Josep enjoys late and long brunches on Sundays, kids permitting. |
|||
19:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
19:50
Invalid Time
Invalid Time
|
Break |
|||
20:00
Invalid Time
Invalid Time
|
The Functional Programming literature is full of words like Monad, Functor, … which can be a little bit intimidating at first. Most explanations tend to not help much with that - encoding effects, category theory… this can be properly terrifying for down-to-earth developers that just want to write some code. The purpose of this talk is to show how these abstractions come up very naturally in very concrete projects, and how they allow you to think about the problem you’re trying to solve rather than focus on irrelevant noise. At the end of the talk, attendants will have a solid intuition for what Functor, Apply, Applicative, FlatMap and Monad are, what problem they solve and how, and when (or when not) to use them.
software-development
flatmap
apply
applicative
functor
monad
scala
About the speaker...Nicolas RinaudoNicolas is the CTO of Besedo, where we use Scala to moderate large volumes of user generated content and do weird things to machine learning models. After too many years as a Java programmer and a thankfully brief stint in marketing, Nicolas discovered Functional Programming through Scala and fell in love. Since then, he’s made it his mission to learn and explain the scary bits, by focusing on practical applications. Nicolas is also the author and sole maintainer of a few useful OSS libraries, such as kantan.csv. |
|||
20:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
20:50
Invalid Time
Invalid Time
|
Break |
|||
21:00
Invalid Time
Invalid Time
|
In this talk, we present an automated approach for formally verifying the correctness of functional programming assignments. Our approach takes a small set of reference solutions and a set of student submissions and checks, for each submission, whether it is provably correct. We start by introducing our technique for automated equivalence checking, using the Stainless verification system. Our approach automatically matches function calls, generates proofs by induction, and checks them using SMT solvers. We then present our clustering algorithm that efficiently treats many programs at once. We conclude by demonstrating the effectiveness of our approach in practice, looking at various introductory Scala exercises.
software-development
scala
About the speaker...Dragana MilovancevicDragana Milovančević is a PhD student in the LARA group at EPFL, under the supervision of Viktor Kunčak. Previously, she received her master's degree from the University of Belgrade. Her research interests are in the field of formal verification, where she applies equivalence checking to a variety of domains, including automated grading. |
|||
21:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
21:50
Invalid Time
Invalid Time
|
End of Day |
Day 4: 7 October
ScalaCon Live Online
Track | Main Track | |||
09:50
Invalid Time
Invalid Time
|
Welcome & Opening Remarks |
|||
10:00
Invalid Time
Invalid Time
|
Starting from scratch, we build a small Scala.js application with a minimal, live-editable bar chart. We show a setup for a fast save-refresh cycle. We use the following technologies:
A significant portion of the talk focuses on Laminar and its FRP model. We do not talk about the server-side aspects.
software-development
scalably-typed
laminar
vite
scala.is
About the speaker...Sébastien DoeraeneSébastien Doeraene is a compiler/runtime systems hacker and a Scala enthusiast. Best known as the author of Scala.js, he is now an engineer at the Scala Center. He holds a PhD from EPFL, having worked under the supervision of Prof. Martin Odersky, and a master’s degree in computer science engineering from Université catholique de Louvain in Belgium. When he is not busy coding, he sings in choirs and a cappella groups such as the Ensemble Vocal Évohé, or composes for and conducts said choirs. |
|||
10:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
10:50
Invalid Time
Invalid Time
|
Break |
|||
11:00
Invalid Time
Invalid Time
|
Debug Server: How we use the Java implementation of the DAP (Debug Adapter Protocol) to build a basic debugger for Scala in Metals: add breakpoints, pause the program, inspect the call stack and the local variables. Expression Compiler: The expression compiler can compile any Scala expression into a class file, that can be loaded and executed at runtime. I will tell the story of how we built it: from the initial ideas to the current implementation. I will take some concrete examples to show how it supports the most powerful features of the language, like the contextual abstractions or the macros. This is also an opportunity to discover the internal architecture of the Scala 3 compiler. Step filter: The step filter allows the debugger to skip the methods that are entirely generated by the Scala compiler. In this part we will see how the Scala compiler translates Scala code into Java class files and how we can decompile some information back to Scala definitions using Tasty.
software-development
tasty
compiler
debug
tooling
scala-3
About the speaker...Adrien PiquerezMember of the Scala Center. Contributor and maintainer of sbt, Metals and Scaladex. |
|||
11:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
11:50
Invalid Time
Invalid Time
|
Break |
|||
12:00
Invalid Time
Invalid Time
|
Grackle is a GraphQL server based on libraries from Typelevel stack (cats, FS2, circe). It has the unique ability to configure a mapping between GraphQL queries and SQL queries. It can also use in-memory collections instead of SQL database. It is available for Scala 3 (as well as for Scala 2). We would like to present this emerging solution. We want to cover Grackle from the user point of view and also its internals: compilation of GraphQL into a query algebra and its interpretation for in-memory mappings as well as compilation to SQL for DB-backed mappings.
software-development
graphql
scala
About the speakers...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. Rafał PiotrowskiSoftware developer focused on functional programming in Scala with broad experience with back-end systems for web applications. |
|||
12:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
12:50
Invalid Time
Invalid Time
|
Break |
|||
13:00
Invalid Time
Invalid Time
|
Have you ever been confused by implicits in Scala? I most certainly have. I struggled to understand them at the beginning of my Scala journey, and to this day I trip over them regularly. It doesn’t help that one keyword can be used for many different things - defining Implicit parameters, implicit conversions, or type class instances. And sometimes it’s so frustrating when your code doesn’t compile because you can’t remember the magical implicit import incantation that is needed (the problem also known as “why does it work fine in that other file, but not here?!”). Scala 3 addresses a lot of the tricky bits in the language to make it clearer and easier to use, and luckily, implicits have also undergone a redesign. Well, to be precise… they’re gone. But in their place, we’re getting language constructs that do one thing and do it well. Please join me in welcoming the new keywords: “given” and “using”, as well as context functions and extension methods. They’re the new kids on the block to define our contextual abstractions, and they’re here to make our code more expressive and easier to understand. Let’s see them in action.
software-development
implicits
scala-3
scala
About the speaker...Magda StożekScala developer at SoftwareMill trying to find “the right way” of doing things. Leader of Zielona Góra JUG and co-organiser of the Greenfield Conference. After hours, she enjoys biking, gardening, and reading long books |
|||
13:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
13:50
Invalid Time
Invalid Time
|
Mid-Day Break |
|||
15:00
Invalid Time
Invalid Time
|
Micro-services are an extremely common development pattern in the industry. There are a ton of libraries and frameworks focused on making their development as easy and painless as possible. As soon as we introduce the streaming keyword however things change, this is now a much more niche problem with different characteristics. Most frameworks do not offer built-in support for them and building them using low-level libraries like Akka can be a slow and difficult process. Spekka is a library built upon and extending Akka with the objective of making the development of streaming micro-services as productive as possible. In this talk we will use Spekka to develop a simple but somewhat realistic stateful streaming micro-service, starting from the raw input, expanding our implementation along the way to consider aspects like fault tolerance and scalability.
software-development
library
micro-services
streaming
akka
scala
About the speaker...Andrea ZitoAndrea Zito (nivox online) is an Italian software engineer with a passion for functional programming, streaming services and distributed system. When he's not playing with code, he likes to run and hike in the mountains. |
|||
15:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
15:50
Invalid Time
Invalid Time
|
Break |
|||
16:00
Invalid Time
Invalid Time
|
Context functions made their debut in Scala 3.0, but are still alien to many Scala developers. In my talk I’d like to tame the beasts and benefit from them. First, I will start with the basics. I am going to explain where the idea of context functions came from and what problem they intended to solve. Then I will show how to put them to work by creating simple DSL. Subsequently, we’ll get to know the unexpected sides of the beasts: How they interact with type inference, the weirdest part of the context functions. I’ll go into more detail and explain why context functions behave differently from ordinary functions in the type system. Lastly, I’ll tackle an important question: “Is it true that context functions don’t compose well?” I’ll show the common pitfalls and how to avoid them, and I’ll reveal some nifty hacks that I came across while experimenting. I hope that after this talk, the listeners will be able to use and understand context functions but also understand where and how they can safely use them and where they should avoid them. |
|||
16:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
16:50
Invalid Time
Invalid Time
|
Break |
|||
17:00
Invalid Time
Invalid Time
|
Technically, the talk will show how to achieve this by implementing a thin DSL layer on top of the Spark DataFrame API. Particularly, it will show how this DSL builds upon common functional programming patterns and concepts such as Kleislis, type classes, type-level computing, etc., taking advantage of common libraries of the Scala ecosystem such as cats, shapeless, etc.
software-development
cats
spark
scala
About the speaker...Alfonso RoaAlfonso Roa is a Functional Programmer and Architect in Habla Computing. Alfonso has been using Apache Spark mainly for the last seven years in real-world applications for all kinds of sectors and he has extensive experience in consultancy projects focused mainly on big data, developing applications for analysis and ML, and tries to spend some of his free time creating libraries to give back to the open-source community. He’s also a co-organizer of the Madrid Scala Meetup group. |
|||
17:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
17:50
Invalid Time
Invalid Time
|
Break |
|||
18:00
Invalid Time
Invalid Time
|
It so happens that functional languages can be used as theorem provers, by virtue of the so-called Curry-Howard correspondence. Besides its theoretical significance, there is an appealing practical corollary: using logic exercises and recreational puzzles to improve our mastery of our language of choice, Scala. This talk has precisely the goal of explaining type-driven development and basic features of the Scala 3 type system, using Aristotle’s syllogisms, Raymond Smullyan’s Knights and knaves puzzles, and common propositional tautologies. In particular, we will see how signatures built upon algebraic data types and dependent types allow us to model these logical problems, and how type-driven development mimics the logical reasoning used to find the corresponding proofs.
software-development
puzzles
types
logic
scala-3
About the speaker...Juan M. SerranoJuan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last six years in real-world applications for the banking sector, and has extensive experience in consultancy projects with scalaz, cats and other functional frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees. |
|||
18:45
Invalid Time
Invalid Time
|
Live Q&A |
|||
18:50
Invalid Time
Invalid Time
|
End of Day |
-
Simply Scala
Featuring Martin Odersky
In this talk, Martin Odersky will raise the problem "why Scala is often described as difficult" and start a discussion on how the Scala ecosystem can do better.
software-development scala -
Tournesol: An Open-Source Project for Collaborative Algorithmic Governance
Featuring Lê Nguyên Hoang
In this talk, Lê presents Tournesol, an open-source AGPL platform to collaboratively design a public utility content recommendation algorithm.
software-development scala -
How to Avoid Safety Hazards when using Closures in Scala
Featuring Philipp Haller
Closures, or lambda expressions, are an essential language feature to work productively with data processing engines and they enable functional programming. In this talk you will learn how to avoid safety hazards and runtime errors when using closures in concurrent or distributed settings.
scala3 scala distributed-programming concurrency serialization language-design software-development -
Scala with Batteries Included?
Featuring Krzysztof Romanowski
Python is known and loved for its battery-included approach. In this talk, I’ll explore if Scala can also include “batteries”: all the tools and libraries needed for small but meaningful projects. Let me convince you that vanilla Scala may be all you need in the near future.
scala3 software-development scala -
Fetchless – A New Take on Data Retrieval
Featuring Ryan Peters
“Fetchless” is a total reinvention of the famous Scala “Fetch” library that is rebuilt from the ground up to be more flexible, extensible, and meet the needs of modern Scala effect systems and their users while also being an order of magnitude faster in worst-case scenarios.
scala fetch software-development -
How to Test a Million Lines of Code without Writing a Single Test
Featuring Wojciech Mazur
You might have already created hundreds of tests for Scala 3 and still be unaware of that! How is that possible? Let’s talk about the Scala 3 Community Build!
tooling community-build scala compiler software-development -
A Practical Skeleton for your next Scala/Scala.js Web Application
Featuring Alexis Hernandez
I’m sure that you have saw yourself writing the same boilerplate code many times when working in new web applications (registration/login/layout/etc), that’s was my case until I decided to create a nice skeleton that’s easy to get into by juniors, easily saving 1 month of work for every new app.
... postgresql play-framework scalabily-typed slinky react software-development scala.js web-application -
Data-Centricity: Rethinking Introductory Computing to Support Data Science
Featuring Kathi Fisler
This talk argues that a common introductory course that covers both data science and data structures supports students and provides curricular flexibility, while also bringing social impacts of computing into the early curriculum.
software-development data data-centric -
Type-Level Programming in Scala
Featuring Matt Bovel
Learn how to increase your design space for compile-time verification in Scala 3!
software-development type-level-programming scala scala-3 -
It Quacks but it’s not a Duck: Structural Typing in Scala 3
Featuring Michał Pałka
Imagine you could write type-safe code without having to modify your data model classes every time you update a database query. Or access members of deeply nested data structures without boilerplate. With structural typing in Scala 3 you can make these dreams come true and get even more.
software-development scala-3 scala -
2
Towards a Healthy & Resilient Scala Community
Featuring Adam Goodman and Darja Jovanovic
Explore answers to the questions: What constitutes a healthy community? How do we get there and who needs to participate to make it a reality? Where does Scala community stand now? And how does Scala Center's "Scala governance project" fit in all of this?
software-development scala -
Managing Micro-Libraries with Scala CLI
Featuring Alexandre Archambault
Scala CLI is a new and versatile tool to compile, test, run, package, and publish Scala projects. While it’s handy for experiments and scripting, its cross-compilation and publishing support make it the perfect tool to manage micro-libraries from beginning to end, as we’ll demonstrate in this...
software-development scala-3 scala -
2
Scala in Ukraine
Featuring Roksolana Diachuk and Maciej Gorywoda
Come to hear a story, leave making plans for a trip to Ukraine.
We will tell you about how Scala came to Ukraine, who was the first to use it and how, but also who are the people of the Ukrainian Scala community, what are their thoughts and plans, and how you can get involved.
software-development ukraine community scala -
Preparing Apache Kafka for Scala 3
Featuring Josep Prat
Migrating Open Source projects to Scala 3 will be a recurring task in the future. Check out our experience while proofing the migration of Apache Kafka. We’ll share the obstacles faced, like tooling and compatibility checks, as well as where the community can improve to make such migrations...
software-development interoperability java dotty scala oss migration kafka scala-3 -
Function Reuse is just Wishful Thinking
Featuring Nicolas Rinaudo
Functors, monads, etc… can be both very useful and extremely intimidating.
This talk will introduce and justify them in a real life scenario, staying away from their more academic interpretations. It will allow attendants to build a solid intuition for the problems they actually solve.
software-development flatmap apply applicative functor monad scala -
Autograder for Functional Programming and Beyond
Featuring Dragana Milovancevic
In this talk, we present an automated approach for formally verifying the correctness of functional programming assignments.
software-development scala -
Getting Started with Scala.js, Laminar and Vite
Featuring Sébastien Doeraene
Starting from scratch, we build a small Scala.js (https://www.scala-js.org/) application with a minimal, live-editable bar chart. We show a setup for a fast save-refresh cycle. We use Metals, sbt, Vite, Laminar, Chart.js and ScalablyTyped. Includes an intro to the FRP model of Laminar.
software-development scalably-typed laminar vite scala.is -
Building a Debugger for Scala 3
Featuring Adrien Piquerez
Building a debugger for a high-level programming language like Scala 3 is a challenging task. In this talk I will decompose it in smaller problems and describe our solutions: a debug server, an expression compiler and a step filter.
software-development tasty compiler debug tooling scala-3 -
2
Grackle – GraphQL Server
Featuring Miles Sabin and Rafał Piotrowski
During this talk, we would like to introduce Grackle GraphQL server. We will show how it can be used and how it works under the hood.
software-development graphql scala -
Say Goodbye to Implicits – Contextual Abstractions in Scala 3
Featuring Magda Stożek
Scala 3 is out, but is it worth switching to? In my opinion, yes, because the authors addressed some important pain points, and for sure implicits are one of them! In Scala 2 they’re used, confused and abused - let’s see how much better it is in Scala 3.
software-development implicits scala-3 scala -
Speck Flavored Streaming Micro-Services with Akka
Featuring Andrea Zito
In this talk, we will dive into the world of streaming micro-services and we’ll explore together the typical development journey starting from the raw input, all the way to a persisted, clustered prototype. This will be possible by leveraging Spekka’s productivity enhancements to Akka Streams.
software-development library micro-services streaming akka scala -
Taming the Context Beast
Featuring Paweł Marks
Context functions are the new beasts in the Scala jungle. I’ll show you what they can do, when to be wary of them, and how to tame them. Finally, I’ll answer whether they really hate composition as much as it’s rumored.
software-development context-functions implicits scala scala-3 -
What Logic can Teach Us, Scala Programmers
Featuring Juan M. Serrano
It turns out that logic is a great source of exercises for mastering algebraic data types, dependent types and other Scala features. Take the challenge of using Scala 3 to prove Aristotle’s syllogisms or Smullyan’s logical puzzles, and bring your type-driven development skills to the next level!
... software-development puzzles types logic scala-3 -
The Middle Way for Static Typing in Spark DataFrames
Featuring Alfonso Roa
No static typing with DataFrames, too much static typing with Datasets. Steer clear of both extremes, and embrace a new proposal of typed column expressions! Brought to you with the help of functional programming patterns, Scala idioms, cats, shapeless and other libraries of the Scala ecosystem.
... software-development cats spark scala
-
ScalaCon 2022: Opening Keynote Networking Party
0.5 days in London
ScalaCon is a virtual conference designed to bring the Scala community closer together. October 4, 2022
software-development scalacon scala -
ScalaCon 2021: November Edition
Four days - Online Conference
ScalaCon is a series of virtual conferences designed to bring the Scala community closer together.
scala akka functional-programming scala-3 -
ScalaCon 2021: May Edition
Four days - Online Conference
ScalaCon is a series of virtual conferences designed to bring the Scala community closer together. May 18th - 21st. and Nov. 2nd - 5th.
scala scala-3