In Defense of Subtyping Scala is unique in having an advance and comprehensive type system with subtyping at its heart. This inclusion of subtyping adds significant complexity to the language, leading to features like type bounds and variance. But what is the true value of subtyping? What is subtyping, and what can we do with it that we couldn't do without it? Do the benefits outweigh the costs? I will explore these questions, and share my thoughts on where Scala currently fits into the bigger picture, and how Scala 3 will push Scala's unique position forwards.
Jon has worked full-time as a Scala developer since 2004, and has been heavily involved in the Scala community for as long as it has existed. He travels extensively, speaking on a variety of Scala topics at many Scala events worldwide, including talks on his open-source libraries and original reseach on subjects such as type inference and the differences between type members and type parameters. Jon chairs the Scala Center Advisory Board.
Caroline has spent 17 years helping teams and individuals deliver high quality incremental software solutions. Her skills have grown through first hand experience within product organizations as well as software consultancy. During this time, Caroline has worked both on the front lines of software delivery as well as on management and executive leadership teams of successful companies. Caroline is an Associate Integral Coach and is also a Certified Enterprise Agile Coach. She is currently the Director of Agile Development at IFS. During her off hours, she coaches team leaders to build capabilities aimed creating healthy and effective teams via her own business, InsideOutAgile.
Diederik van Liere is a Director of Data Science & Engineering at Shopify. He joined the company in 2014 and has helped build their new data warehouse, their improved data ingestion pipeline and front-end pixel. More recently, he is responsible for building numerous data science teams to put the power of data in the hands of Shopify merchants.Prior to Shopify, he was a Product Manager of Analytics at the Wikimedia Foundation,the organization that runs Wikipedia and it's sister projects. He helped build their first big data team and introduced big data technologies like Hadoop,Hive and Kafka. He holds a PhD (with honors) from the Decision Sciences department from the Rotterdam School of Management,Erasmus University,the Netherlands.
Mike Kelland leads Professional Services for Lightbend and brings over 15 years of software industry experience to Lightbend. Mike was most recently the CEO of BoldRadius Solutions, a services company focused on the Lightbend Reactive Platform. Prior to that, Mike was an early employee or founder in a variety of technology companies working in the infrastructure, custom software, network security, web development and hardware sectors where he excelled in creating successful growth through curiosity, culture and focused execution. Mike holds a Bachelor degree in Electrical Engineering from Carleton University in Ottawa..
Susan Davis fell in love with computers and programming during the 8-bit revolution, and with Scala when she had the opportunity to work at BoldRadius and Lightbend. Along the way, she’s been a developer, architect, manager, coach, and startup founder, including helping clients with their people and team problems during her stint at Lightbend Services. She’s currently a Director of Engineering at FreshBooks, where she’s building a fast data architecture out of Python and RabbitMQ instead of Scala and Kafka..
We as developers wield great power to impact the world around us. We’ve seen this power used to create greatness the world has never seen - innovations that have skyrocketed us into a future much closer than we thought it would be.
As is the nature of our universe, our power has the capacity to be used to improve our state as humans, or it can tear us down. Our software-development industry been plagued by scandal and inflamed mistrust, but we’ve also contributed life-saving code (ya) and enabled potentially environment saving insights.
In this talk, we will explore the ethics of software innovation from the perspective of developers by investigating some of the principals we tend to idolize; Innovate quickly, automate everything, run code faster, store more data, support artificial/augmented intelligence etc. What are the potential upsides and downsides of embracing these principles and is there some balance to be achieved? Can Scala in particular help us to achieve certain balance?.
This is a topic likely to create tension, controversy and mixed-emotions, but it also has the potential to create positive urgency, enlightenment and hope for the future of our craft.
I have a passion for leading enterprise transformations, creating innovative solutions using emerging technologies to modernize heritage environments. I find a certain joy developing large scale distributed systems using Reactive Principles, especially when building with Lightbend Reactive Platform - Akka and friends. I have slight Scala bias, but at least half of my time is spent with Java. I enjoy the benefits of broad industry experience having worked in entertainment, hospitality, retail, life science and others. I do play favorites, but you’ll have to ask on the right day. My personal passion project involves non-profit missions in anti human trafficking with focus on prevention and aftercare.
Target audience level: IntermediateWe will start with the cost-benefit analysis of upgrading your legacy services with Akka Streams. After that I will share our experiences moving to Akka Streams, learnings along the way, and some of the surprising things we found out the hard way..
I am lucky enough to be working with Scala full time at Paytm Labs, developing fault tolerant distributed systems and analyzing terabytes of data with Spark jobs.
Target audience level: Intermediate, AdvancedFeature engineering is the process of selecting and transforming properties of a data set to prepare for training a machine learning model, and is a vital component of successful ML systems. Often, this task involves writing cumbersome boilerplate and is usually coupled to a specific processing system. At Spotify, we built Featran to simplify this time-consuming task and support several processing frameworks under a uniform API, leveraging the powerful features and type-safety of Scala. This talk will begin with an overview of big data and ML at Spotify, and then we’ll dive into the design and implementation of Featran.
Target audience level: IntermediateFree structures, Final Tagless Encoding and the Eff Monad have gained a lot of attention lately as approaches to functional architecture and effect handling but what is their actual cost?.
This talk will investigate the performance overheads of using these abstractions and compare them both to one another and in an absolute manner.
We will walk through some benchmarks for a few common scenarios and better understand what the relative tradeoffs are, and also answer the question of “will this affect my apps performance”.
Target audience level: Beginner, IntermediatePagerDuty has been developing microservices which directly power our APIs. These microservices need generic edge concerns (like authentication) handled for them, and they need easy ways to provide data to end-users. That data is usually delivered in response to HTTP requests, but increasingly also delivered "live" via WebSockets..
Backends-for-Frontends (BFFs) is one pattern for addressing those needs. Attendees can expect to learn how PagerDuty implemented BFFs using Akka HTTP to proxy API requests, and Akka Streams to deliver live data from Kafka to our end-users. Actual code examples will be given, and several real-world problems will be discussed along with their solutions.
David lives in Toronto; he enjoys playing board games, cooking, and installing Linux on everything. You can usually find him cycling about the west end in search of tasty food and beverages.
Target audience level: IntermediateIf you're serving up more than just a TODO app with an anemic domain model, your users are going to expect an up-to-date web experience. Thankfully, our favorite tools and technologies make it easy to keep up and adopt.
With the release of Play 2.6, Scala developers are able to tap into more than just the new features of Scala 2.12. HTTP/2 support has been added, but what does that mean?
If you're using Scala's concurrency capabilities to build or enhance a SaaS platform offering, then you just got a lot of new choices when managing ongoing requests.
This talk will demonstrate relevant HTTP/2's features, using Play 2.6 and a front-end file upload JS library (Fine Uploader), :
- framed (e.g. transformed in-situ) file upload to backend (S3 or similar FS)
- multi-file upload
- individual pause, cancel, and resume
Finally, the session will be summarized with a discussion on how best to incorporated new capabilities introduced by an evolving tech stack (Scala + Play + etc.) into a SaaS platform offering.
David’s favorite was Adobe’s web server product. Just kidding! It’s Docker.
Did you think he would say Scala? Even in Scala-land, Docker > _
Target audience level: Beginner, IntermediateMicroservices are all the rage now, as well as this new "thing" Fast Data Streaming. But how do we make sense of it all? In this talk, Duncan will focus on a specific design for Microservices, Promised based Event Driven Programming, and how they intertwine with Fast Data Streaming.
Key topics that Duncan will discuss are:
- The value of Event Driven models
- What the difference between an event log and an event model is
- Promise theory plays into this programming paradigm
- Event Sourcing and Command Sourcing
- How Event models relate to historical state management
- Fast Data Streaming and how this new paradigm affects our Microservice design.
Target audience level: Beginner, IntermediateKeeping the functional paradigm intact while using complicated monad structure in your code could be quite a tedious task. Especially, when your business logic needs to be structured in a flow, suddenly you realize that your code is moving away from the functional paradigm. Well, definitely Monads composition is the savior in this kind of situations, however, composing them practically is again a cumbersome task. We will be doing a live coding examples in this talk, which would hopefully make you sit back and relax when you face this kind of situation again. The live code will include custom monads creation, right usage of monadic operator and resolution of monad composition problems and many more.
We trained new joines with our technology stack during a program called KIP.
I am actively participating in VJUG online sessions and takes a part in technical community discussions.
Target audience level: Beginner, IntermediateAs a functional backend developer I've always been surprised by how DevOps stayed away of all the functional programming paradigm. Clearly the backend is leading in that domain and we've seen successful attempt to bring it in the frontend with Scala.JS, so why not DevOps?.
Using Scala to do Functional DevOps is now possible with Orkestra, an Open Source Continuous Integration / Continuous Deployment server as a library running on Kubernetes.
It leverages Kubernetes concepts such as Jobs or Secrets, and configuration as code in Scala to take the most of compile time type safety and compatibility with Scala or Java libraries.
So in short: it lets you do Functional DevOps with Scala.
More info on https://orkestra.tech
Target audience level: IntermediateRich domain models, inspired by imperative objective-oriented approaches, dominate this industry. Lean and functional domain models are a compelling alternative. By separating behaviour and state, lean models offer an effective and scalable way to represent units of behaviour. With the advances in cloud-based infrastructures and implementation of microservices architectures, functional models seem to be a compatible, resilience enabling and more obvious choice as the preferred paradigm.
Target audience level: Intermediate, AdvancedHave you ever asked yourself why we only free monads? Turns out there are a lot of other structures that want to be liberated from the constraints of their existence! In this talk we will investigate what other poor (algebraic) structures we can free from the dirty hands of imperative programmers.
He loves functional programming and languages with powerful type systems.
Target audience level: IntermediateIn this presentation, I will talk about a new Open Source project called Reactive Reports, and I will show some practical examples..
Input data can come from mixed sources. One input from a database, one from a Twitter stream, and one from Spark.
What’s unique about Reactive Reports is that its architecture is designed to conserve memory, and users will not get out of memory errors for large amounts of data, due to the use of Akka streaming, and due to its internal architecture with regards to how it stores data.
Its flexibility brings great value to the market. Because reports are written through code, graphics are highly customizable. Also, reports can run on a multitude of systems, and they can be easily automated, as an example, from a shell script. GitHub repo for Reactive Reports: https://github.com/sysalto/ReactiveReports
I work for IBM, and I graduated from University of Waterloo, Computer Science Co-op. My interests are Cloud Computing, Spark, Big Data and Machine Learning. I am passionate about bringing innovative solutions that improve systems and change the world. In my free time, I enjoy sports, photography, travel and nature.
Target audience level: IntermediateThe talk presents a case study of moving a huge hospitality organisation from legacy monolith to battle ready micro-services. It works through the challenges both on the business and technical front to get an efficient scalable and extensible solution to production.
The stack is based on the Fast Data Platform with an added level of complexity of data centres always on the move.
The take away from the talk would be the practical suggestions and tips to move a huge monolithic architecture to a system which is future ready.
Vikas is the Global CTO & Co-Founder of Knoldus Inc, which is a Platinum Lightbend partner. He has been working on the reactive stack since 2009 helping various organisations realise their dream of future ready, web scale products.
He speaks at various forums, teaches and evangelises the Reactive stack and helps set the technology direction of the organisations that Knoldus works with.
Target audience level: Beginner, IntermediateSQL remains the ubiquitous tool of data reporting, analysis, and exploration. However, sharing context and common usage for datasets across teams is a manual and elective process, leading to poorly repeated patterns and bad habits. This talk will review a new system, written in Scala, which enables SQL query analysis such as finding commonly joined tables, tracking column lineage, and discovering unused columns. A primary focus of the effort is to increase data discovery among various data science teams.
Target audience level: Intermediate
BigDiffy ( https://github.com/spotify/ratatool/tree/master/ratatool-diffy ) is an open source tool built at Spotify to perform pair-wise field level statistical analyses of large datasets. It has been used extensively to detect data quality issues when performing backfills, and in migrating to Google Cloud Platform. We will walk through a single record level Diff for one of currently supported types (Avro, Protobuf, BigQuery TableRow). We will also discuss aggregating deltas effectively using Algebird and Semigroups, and building the four central moments (mean, std. dev., variation, kurtosis).
I am a Data Engineer at Spotify in New York City working on Data Quality related tooling and building out Infrastructure to assist other Data Engineers with quality issues. I studied at the University of Toronto and previously worked at a few Toronto-based startups before moving to Spotify in May 2017.
Target audience level: IntermediateAt Shopify, we have many different sources of data we use for analytical purposes (that includes databases and various APIs). A while ago we decided to implement those as Spark datasources so that anyone using Spark could get access to our data library while using native Spark interfaces.
Target audience level: IntermediateJSON is popular among (REST) APIs. But its limited typing can make it difficult to differentiate valid from invalid input into an application or function.
Refined is a library that makes defining strict API contracts easy without taxing the developer or cluttering up source code.
Many amazing integrations into the library (circe, pureconfig, scalaz, etc.) ensure minimal effort is needed when adding refined to virtually any project.
This talk gives a short overview of how refined has helped me avoid the usual pitfalls attached to stringly-typed and JSON input.
Professionally, I have been in the security space for more than five years, worked with a variety of languages and technologies.
Scala has been one of the few constants along the way and improving the quality of my team's work products is one of the most important aspects of "life at the office".
In my free time I contribute to NixOS, Scalaz, refined and whichever OpenSource project currently tickles my fancy.