• Why API Design Matters, and Why Yours Sucks! (and mine sucks too!) by Dick Wall

    Hi scalators,

    I'm pleased to announce our next event with Scala community luminary, and my new colleague at Hopper, Dick Wall! You may know Dick from his Scalawags podcast, training, and other work in the Scala community! This presentation will teach the fundamentals of building good, concise, low surface area APIs in Scala and is inspired by none other than Josh Bloch, a friend of Dick's, and the author of many JVM core libraries and other projects in the Java ecosystem. Don't miss it!

    Speaker: Dick Wall, Principal Software Engineer, Hopper

    Bio:

    Winner of the inaugural Phil Bagwell Award for Service to the Scala Community and with over fourteen years of experience in Scala development as well as being a member of Java Posse, Dick Wall is a renowned speaker and trainer in the application of Scala. He is a Geographical Information System specialist using Scala at Hopper, Inc., CEO of Escalate Software and previous co-host on Scalawags Podcast. Dick has rediscovered his love of GIS combined with the power of the Scala type system, and wants to share his experiences of writing APIs to simplify that subject for others.

    Talk:

    As a developer trying to get results in the Scala world, the diversity in approaches of different libraries can be totally overwhelming, and the impedance mismatch between different libraries (and different developer preferences) often leads to confusion and inefficiency in development.

    Among all of this, is what Dick feels to be the "lost art" of API design in the Scala community. Good APIs are small, focused and thoughtfully designed, isolating the developer using them from the underlying implementation whatever it is and however clever it might be. A good API should not require the user to care about the aspect they are using it for, after all, if they were really interested in that aspect, the chances are they would take control and write something themselves. Developers tend to get caught up in their enthusiasm and great ideas within their field of expertise and not consider that most people simply don't care about that and instead just want to get to their own area of interest.

    In this talk Dick will examine advice from a number of sources, but primarily Josh Bloch, who has spent a great deal of time thinking about, designing and implementing APIs, APIs that we all still use to some degree even in Scala (e.g. the Java core libraries, Guava and many others). Josh writes APIs that everyone uses and most people don't notice. Dick will explore some of his advice, and some of his own and and you will learn from both about sound API design and its importance to the Scala ecosystem.

    The primary mistakes Dick sees time and again are:

    * Domain splurge, trying to solve every problem instead of focusing on the domain that really matters to your API

    * Unintended usage, when the API is out in the wild, do people use it totally wrongly? People can be troublesome that way, but ultimately the problem is with your API

    * Overemphasis on cleverness - just because you had a great idea, doesn't mean anyone else cares, or should care. If it makes things better, great, let people use it without beating them over the head with it

    * Failing to consider how your solution will work in the bigger picture of the development space. Does your API play nice with others or are you creating a walled garden?

    * Failing to update. An API is never "done" - it should live and evolve as you learn more (in a backwards compatible way whenever possible)

  • Building Twitter's backend RPC services with Finagle

    Online event

    Hi scalators!

    We're back with a talk from Twitter engineering by Dorothy Ordogh. This event will be a good opportunity to learn more about how Twitter's backend tech stack is implemented with the Finagle library.

    Twitter is actively recruiting for a new engineering office based in Toronto. After the talk there will be an opportunity for interested members to ask questions and to hear from Twitter engineering managers about the different teams they represent!

    Talk description:

    Most services at Twitter are built on Finagle, a protocol-agnostic and asynchronous RPC system that allows teams to build robust clients and servers. Finagle has a lot of layers, each layer implementing some portion of this RPC system that seamlessly handles heterogeneity, failures, and concurrency – all characteristics of a distributed system. This talk will discuss how Finagle utilized functional programming's (and by extension, Scala's) foundational concept of composition to build up, and pass information between the aforementioned layers.

    Speaker bio:

    Dorothy is a Scala developer on the Core Systems Libraries team at Twitter. While attending UBC and through her career, she has either been in or adjacent to the Scala community, even speaking at a Typelevel Summit in 2018. Originally hailing from Toronto, Dorothy returned to Vancouver after almost 4.5 years in foggy San Francisco; her hobbies include dancing and eating chocolate.

    Submitting your own talk:

    If you're interested in giving a talk about Scala, Scala libraries, Data engineering, or JVM topics please contact a Scala Toronto organizer. All experience levels are welcome.

    Scala Toronto Slack:

    I would also like to invite people to join our slack instance to chat with organizers, speakers, other members, hiring managers for Scala positions, and even recruiters! Use the following link to sign up.

    https://join.slack.com/t/scala-toronto/shared_invite/zt-5kxeeaom-Da7cqBc9hqpGnLFT0veM5w

  • Flink Jobs Deployment On Kubernetes By Piyush Rana

    Online event

    Hi Scalators,

    I'd like to present a data engineering flavour talk about Flink on Kubernetes from Piyush Rana.

    Description:

    Apache Flink is an open-source stream-processing framework where the core of Flink is a distributed streaming dataflow engine written in Java and Scala.

    Kubernetes is no. 1 growing and most used container-orchestration system for automating application deployment, scaling, and management. When it comes to deploying the flink jobs on production there are various strategies one needs to analyze and configuration with which one needs to play on Kubernetes.

    In this talk, we will talk about those strategies, their pros, and cons, and will have the hands-on session or interactive demo at the same time.

    Speaker Bio:

    Piyush Rana is a Lead Scala Consultant at Knoldus Inc, Canada. He's a LightBend Certified Reactive Architect and is a functional programming enthusiast with experience in Product Development/Consulting, Project Management/Agile/Scrum across multiple domains in Scala, Java, and Big Data.

    He is also an author of a book called “Programming In Scala - A Practical Step by Step Approach for Functional Programming”.
    One can read more about him at https://blog.knoldus.com/author/bigtechnologies/ and can read blogs published by him, and can connect him at Linked in - https://www.linkedin.com/in/piyush-rana-70027888/

    Submitting your own talk:

    If you're interested in giving a talk about Scala, Scala libraries, Data engineering, or JVM topics please contact a Scala Toronto organizer. All experience levels are welcome.

    Scala Toronto Slack:

    I would also like to invite people to join our slack instance to chat with organizers, speakers, other members, and even recruiters! Click the following link to sign up.

    https://join.slack.com/t/scala-toronto/shared_invite/enQtNDM3Mzc2MDMyNjYyLTBkYWVkY2E4MTczZDg2YWE0NjljYjE1M2QyZjc4Y2U3N2M0ZDg4ZTA4ZjMwYTY4NzI5M2Q1NzA4ZjQ1OGE5Yjc

  • How I learned to stop worrying about Software Design and love Composition.

    Hello Scalators,

    Hope you have had a safe and lovely summertime. We are happy to announce that we have more virtual talks in the pipeline!

    Description:
    In this talk, we’ll see why Composition is the property we should mainly look for when designing software. We’ll cover why it has to be distinguished from Modularity along with the best practices leading to a composable and maintainable design. Attendees should leave the talk better equipped to question existing designs and write better ones.

    Speaker Bio:
    Francis Toth is a software developer, convinced agilist and trainer with over 14 years experience developing highly scalable web/mobile/backend applications, optimizing work processes, and leading dev teams. He is currently interested in Functional Programming, DevOps, and distributed systems. He also gives presentations at various events, plays the guitar, loves music, and Taekwondo.

    Francis frequently posts about interesting Scala topics at https://contramap.dev

    Submitting your own talk:
    If you're interested in giving a talk about Scala, Scala libraries, Data engineering, or JVM topics please contact a Scala Toronto organizer. All experience levels are welcome.

    Scala Toronto Slack:
    I would also like to invite people to join our slack instance to chat with organizers, speakers, other members, and even recruiters! Click the following link to sign up.

    https://join.slack.com/t/scala-toronto/shared_invite/enQtNDM3Mzc2MDMyNjYyLTBkYWVkY2E4MTczZDg2YWE0NjljYjE1M2QyZjc4Y2U3N2M0ZDg4ZTA4ZjMwYTY4NzI5M2Q1NzA4ZjQ1OGE5Yjc

  • Getting Things Done in the Scala REPL by Li Haoyi

    Online event

    Hi Scalators,

    We have another virtual talk lined up. This time Li Haoyi will be talking about how useful Scala REPL could be.

    Description:

    The Scala REPL lets you interactively run Scala code snippets and see the results. This talk will explore how far you can stretch the Scala REPL, performing difficult tasks that you may normally associate with larger efforts. Through these exercises, we will see how much useful work you accomplish with a tiny amount of Scala code

    Speaker Bio:

    Li Haoyi graduated from MIT with a degree in Computer Science and Engineering, and since then has been a major contributor to the Scala community. You can find his blog about Scala and other technical topics at http://lihaoyi.com. He has also just launched a new book "Hands-on Scala Programming", available on its website: https://handsonscala.com

    Submitting your own talk:

    If you're interested in giving a talk about Scala, Scala libraries, Data engineering, or JVM topics please contact a Scala Toronto organizer. All experience levels are welcome.

    Scala Toronto Slack:

    I would also like to invite people to join our slack instance to chat with organizers, speakers, other members, and even recruiters! Click the following link to sign up.

    https://join.slack.com/t/scala-toronto/shared_invite/enQtNDM3Mzc2MDMyNjYyLTBkYWVkY2E4MTczZDg2YWE0NjljYjE1M2QyZjc4Y2U3N2M0ZDg4ZTA4ZjMwYTY4NzI5M2Q1NzA4ZjQ1OGE5Yjc

  • Applicative: The Origin Story

    Online event

    Hi Scalators,

    We got another virtual event for you! This talk will dive into some category theory and will attempt to take the blinders off and make things a lot easier to understand by providing some real-world examples that you can use! We will be using Google meetup and the event will be recorded.

    Talk: Applicative: The Origin Story

    Description:

    Functors and Monads came from category theory but where did Applicatives come from? What is the Applicative type class and what can we do with it? This talk answers these questions and shows some practical examples of using Applicative Programming with Effects to solve real world problems.

    Speaker Bio:

    Justin Heyes-Jones is a Scala developer at the consulting company Yoppworks. He works from his home in Vancouver, Canada. He has been programming in Scala for eight years and is very interested (semi-fanatical) in purely functional programming. Apart from writing code to solve business problems, his other great joy is bringing seemingly complex technical topics to a wider audience.

    You can take a look at more of Justin's work here: http://justinhj.github.io

    Submitting your own talk:

    If you're interested in giving a talk about Scala, Scala libraries, Data engineering, or JVM topics please contact a Scala Toronto organizer. All experience levels are welcome.

    Scala Toronto Slack:

    I would also like to invite people to join our slack instance to chat with organizers, speakers, other members, and even recruiters! Click the following link to sign up.

    https://join.slack.com/t/scala-toronto/shared_invite/enQtNDM3Mzc2MDMyNjYyLTBkYWVkY2E4MTczZDg2YWE0NjljYjE1M2QyZjc4Y2U3N2M0ZDg4ZTA4ZjMwYTY4NzI5M2Q1NzA4ZjQ1OGE5Yjc

    4
  • Cloudflow: Spark, Flink, and Akka Working together on Kubernetes by Nolan Grace

    Hi Scalators,

    We're keeping the ball rolling on virtual events. This talk will introduce a new open source project from Lightbend called Cloudflow that can be used to deploy a data streaming platform composed of multiple open source streaming technologies onto Kubernetes (Spark, Flink, Akka Streams/Akka). We'll use Microsoft teams this time. This event will be recorded.

    Talk: Cloudflow: Spark, Flink, and Akka Working together on Kubernetes

    Description:

    Streaming is a huge part of building modern software. The industry is littered with tips, tools, frameworks, and engines directed at helping developers solve steaming problems but when push comes leveraging more than one tool for a project is extremely difficult. Cloudflow is a open-source project from Lightbend designed to address this problem and make it easier for developers to take advantage of all the best tools to solve each streaming challenge.

    In this session we will dive into a cloudflow application and by the end of the presentation you will understand how cloudflow helps developers build more complex streaming applications, with fewer lines of code, and get running on Kubernetes in no time.

    Speaker Bio:

    Nolan Grace is a Senior Solution Architect at Lightbend who travels the world helping companies build reactive tech.

    Submitting your own talk:

    If you're interested in giving a talk about Scala, Scala libraries, Data engineering, or JVM topics please contact a Scala Toronto organizer. All experience levels are welcome.

    Scala Toronto Slack:

    I would also like to invite people to join our slack instance to chat with organizers, speakers, other members, and even recruiters! Click the following link to sign up.

    https://join.slack.com/t/scala-toronto/shared_invite/enQtNDM3Mzc2MDMyNjYyLTBkYWVkY2E4MTczZDg2YWE0NjljYjE1M2QyZjc4Y2U3N2M0ZDg4ZTA4ZjMwYTY4NzI5M2Q1NzA4ZjQ1OGE5Yjc

    5
  • Building a Distributed Graph Database with Akka 2.6 by Yunan Zhao

    Hi Scalators,

    I hope everyone is safe at home and doing their part to "flatten the curve" during these difficult times! To help break the monotony Scala Toronto is going to run several virtual events.

    Our next event will be conducted online by an amazing local Scala engineer that many of you know already, Yunan Zhao. This will be an online-only event. I hope to see (or hear) you there! We'll use Google meet. Here's the scheduled meeting link:

    https://meet.google.com/rad-jehe-rgu

    (Watch for a change in the event URL. We may switch to a Microsoft Team solution)

    Talk: Building a Distributed Graph Database with Akka 2.6

    Description:

    Akka is a popular toolkit for Scala developers to build concurrent and distributed applications. In this talk we will talk about how to use some of the more advanced Akka features/concepts to implement a simple distributed graph database. We will go through how and why each one of these Akka features/concepts is used. By the end of this talk, you should gain a better understanding of Akka and how to build interesting projects with it.

    Speaker Bio:

    Yunan worked as a consultant at Lightbend where he has helped several clients to completely transform their technology stacks to adopt the latest and greatest Microservices Architectures. He is a big fan of Akka and the Reactive Architecture.

    Scala Toronto Slack:

    I would also like to invite people to join our slack instance to chat with organizers, speakers, other members, and even recruiters! Click the following link to sign up.

    https://join.slack.com/t/scala-toronto/shared_invite/enQtNDM3Mzc2MDMyNjYyLTBkYWVkY2E4MTczZDg2YWE0NjljYjE1M2QyZjc4Y2U3N2M0ZDg4ZTA4ZjMwYTY4NzI5M2Q1NzA4ZjQ1OGE5Yjc

    8
  • Play Lagom team Special: Akka Persistence Typed & "Your first OSS contribution"

    Thomson Reuters Toronto Tech Centre

    Hi Scalators,

    I'm pleased to announce a special event with two special Lightbend guests from the Open Source Play/Lagom team at Lightbend: Renato Cavalcanti and Ignasi Marimon-Clos i Sunyol. It's rare to have Scala-based open source project maintainers in town (let alone 2!) so here's your chance to say hello!

    Pizza and beverages will be provided. Location is Thomson Reuters office near Union Station. The doors will be open at 6 and the talks will start at 6:30. The talks will _probably_ not be recorded or broadcast.

    Talk: Akka Persistence Typed

    Description:

    In this talk, we will introduce you to the new Typed APIs for Akka Persistence and its new integration with Akka Cluster Sharding.

    Although type-safety is the coolest thing we are getting from Akka Typed, the new persistence API is more than just types. There are also a few API improvements that will help you write better and safer persistent actors. We will cover the existing pitfalls in the untyped API and how they have been solved in the typed API.

    Speaker Bio:

    Renato is a software developer at Lightbend where he works in the Play/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) and maintainer of Play and Lagom Frameworks.

    Talk: Doing your first OSS contribution

    Description:

    In this talk, Ignasi will share with us everything he wished he had known when he first joined a 100%-OSS team.

    Speaker Bio:

    Ignasi breaks CI builds for a living at Lightbend. Before that, he's been garbage collecting and freelancing.

    10
  • Challenges that everyone struggles with while productionizing Apache Spark

    Hi Scalators,

    Join us at 500px on July 24th for a talk about productionizing Spark by Chetan Khatri! Details below.

    Talk: Challenges that everyone struggles with while productionizing Apache Spark workloads

    Description:

    Spark is a good tool for processing large amounts of data, but there are many pitfalls to avoid in order to build large scale systems in production, This talk will help you to understand kind of challenges you get, when you productionize Spark for TB’s of Data. Talk will guide you through possible practical use cases with best practice solution for Fast Data processing.

    Detailed Description:

    This talk is intended to present :
    1. Primary data structures (RDD, DataSet, Dataframe)
    2. Pragmatic explanation - executors, cores, containers, stage, job, a task in Spark.
    3. Parallel read from JDBC: Challenges and best practices.
    4. Bulk Load API vs JDBC write
    5. An optimization strategy for Joins: SortMergeJoin vs BroadcastHashJoin
    6. Avoid unnecessary shuffle and use of coalesce, repartition, HashPartitioner with use cases. Impact on cache, Disk I/O, Leaking memory, Internal shuffle, spark executor, spark driver.
    7. What to do when spark default sort doesn’t work!, Alternatives.
    8. Why dropDuplicates() doesn’t result consistency, What is alternative.
    9. Optimize Spark stage generation plan: reduce unnecessary repetitive Actions.
    10. Predicate pushdown with partitioning and bucketing.
    11. Why not to use Scala Concurrent ‘Future’ explicitly with Spark jobs.

    Targeted audience: Mid
    1. Who understands basic functional programming with scala or has an understanding of Java.
    2. Who understands concurrent programming or multithreading in Java / Scala.
    3. Who has interest in distributed data processing and has a keen interest in data scaling optimization.
    4. Who has earlier worked in Big Data, Fast Data or has a keen interest.

    Speaker Bio:

    Chetan Khatri is working as a Lead-Data Science at Accion labs, He is an open source contributor at Apache Spark, Apache HBase, Apache Spark - HBase Connector and many other open source projects. He has been authored curriculum of Artificial Intelligence, Data Science, Distributed computing at KSKV Kachchh University, Government of Gujarat - INDIA. He has delivered many talks at Scala.IO, HBaseConAsia, HKOSCon, FossAsia, PyCon India.

    15