A free, once-weekly Scala news flash. Easy to unsubscribe. Goes out every Thursday.
March 14th, 2024, ISSUE 523

READING

Zainab Ali - My Scala Story

A functional programmer, educator, open source contributor and organizer of the London Scala User Group. She is a maintainer of fs2 and the original author of its reactive streams component. For the past five years, she’s helped developers master the art of functional programming in Scala.
Zainab Ali (@_zainabali_)
Handling errors in direct-style Scala

Let's explore the possibilities of elegant error handling in Scala direct style and Ox.
Adam Warski (@adamwarski)
Scala 3.3.2 post-mortem analysis

Last week, we announced the release of Scala 3.4.0 and 3.3.3. The announcement mentioned that we had to skip 3.3.2 due to a bug breaking our forward binary compatibility guarantees in a patch release. In this post, we take a closer look at what happened, why it slipped through our existing testing processes, and what steps we are taking so that it does not happen again in the future.
Sébastien Doeraene (@sjrdoeraene)
Distributed Context Propagation with otel4s

In this blog post we will create a mock distributed application and instrument it with distributed tracing using otel4s. This application will be made up of a http server, a gRPC server, the Kafka message broker and multiple data stores. By doing this we will show how we can trace one logical request across multiple network boundaries, and how this can be used for debugging and performance optimization.
Matt Langsenkamp
Pre-SIP: Improve Syntax for Context Bounds and Givens

It contains new syntax that supersedes some existing syntax that was introduced in 3.0, so it’s better to make the change at a time when not that much code using the new syntax is written yet. By contrast the other two areas maybe quite as important but less urgent. The set of changes proposed here are valuable to have, even if the other two areas are not, or not yet, accepted.
Martin Odersky (@Odersky)
Essential Effects book updated to Cats Effect 3

Check out the freshly updated book!
Adam Rosien (@arosien)
Two-phase consensus with functional Scala

Use the endless-transaction library to achieve consistency in microservices with distributed transactions and a flexible two-phase commit protocol.
Jonas Chapuis (@JonasChapuis)
Deriving the Elm Architecture

Indigo and Tyrian are both based on flavours of the Elm architecture; But why that architecture pattern, and how does it work? In this post, we define some desired principles of how we'd like to program a Graphical User Interface (GUI), and watch the Elm architecture's API inevitably emerge.
Dave Smith (@davidjamessmith)
Implementing a REST service using the ZIO-HTTP high-level EndPoints API

The implementation of this REST service uses ZIO HTTP, a Scala library used for building HTTP servers and clients in a purely functional way, and REDIS, an in-memory data structure store used to implement a cache to speed up the response for an organization previously requested.
Americo Vargas (@AVargasVillazon)

VIDEOS

Foundations of Functional Programming in Scala

The entire course playlist now available for free.
Julien Truffaut (@JulienTruffaut)
NEOTYPE

A high speed tour.
Kit Langton (@kitlangton)
Releasing Kyo: When Performance Meets Elegance In Scala by Flavio Brasil

In this presentation, Flavio introduces Kyo, a next-gen effect system for Scala, offering a fresh approach with algebraic effects. Kyo stands out by avoiding complex Category Theory and cryptic symbols, making development intuitive yet robust. It extends ZIO's effect rotation for greater flexibility and simpler design, also featuring direct syntax and a wide range of built-in effects. Dive into the unveiling of Kyo, its design philosophy, and performance benchmarks.
Flavio Brasil (@flaviowbrasil)
Discover SwissBorg

Voytek Pituła, a Staff Software Engineer at SwissBorg, joins us to shed light on their journey and the role Scala plays in their success.
Voytek Pituła (@Krever01)

EVENTS

Save 10% on a BUNDLE offer: Scalar ticket + Functional stream processing workshop with Zainab Ali

Elevate your Scalar experience with a special offer exclusive to Scala Times subscribers. Use the code: ScalaTimes10 to unlock a 10% discount on a bundle that includes a regular Scalar ticket and a hands-on workshop. Supercharge your streams with cats-effect and fs2 and make your Scalar experience truly unforgettable.
Zainab Ali (@_zainabali_)
Save 10% on a BUNDLE offer: Scalar ticket + Full-stack Scala 3 workshop with Daniel Ciocîrlan

Elevate your Scalar experience with a special offer exclusive to Scala Times subscribers. Use the code: ScalaTimes10 to unlock a 10% discount on a bundle that includes a regular Scalar ticket and a hands-on workshop. Learn full stack Scala 3 with ZIO and friends, and make your Scalar experience truly unforgettable.
Daniel Ciocîrlan (@rockthejvm)
Save 10% on a Scalar ticket

Last chance to join Scalar! Use the code: ScalaTimes10 to unlock a 10% discount on a regular Scalar ticket. During the conference: 25 awesome talks on FP, Scala, use-cases, data science, Native, JS, and more; celebrating 20 years of Scala at the community party!.
Scalar Conference (@scalarconf)
LambdaConf, May 4th-10th, Estes Park, Colorado

Get ready!
LambdaConf (@lambda_conf)
ScalaMatsuri, June 7th-9th, Tokyo, Japan

The largest international Scala conference in Asia.
ScalaMatsuri (@ScalaMatsuri)

RELEASES

Jar Jar Abrams 1.14.0 and sbt-assembly 2.2.0

Jar Jar Abrams is an experimental extension to Jar Jar Links, intended to shade Scala libraries.





  1. Scala Times Issue #523

    Zainab Ali - My Scala Story. Handling errors in direct-style Scala. Scala 3.3.2 post-mortem analysis. Distributed Context Propagation with otel4s. Pre-SIP: Improve Syntax for Context Bounds and Givens.


  2. Scala Times Issue #522

    The Functional Programming in Scala Course Is Out!. Shipping your code to cloud with Scala, Besom and Pulumi. Flavors of shared state in Cats Effect. Pekko Akka Compatibility. Benchmarking Tapir: Part 2.


  3. Scala Times Issue #521

    What to do with your End Of Life Akka?. Introducing Playwright-jsEnv for unit testing in scala-js environments. The holy graal of GitHub Actions. Gabriel Volpe - My Scala Story. Game development in Scala.js with David Smith.


  4. Scala Times Issue #520

    My team built and productionized a custom rate limiter in Scala. Benchmarking Tapir: Part 1. WebSockets in Http4s. Improving my Distributed System with Scala 3 (Part 2). Tomas Mikula - My Scala Story.


  5. Scala Times Issue #519

    Debugging session #1: zio-logging & quill. Scala Developer Advocate open hours - AMA . Better Shell Scripting with Scala-CLI. C-style for loops in Scala 3. Paweł Marks - My Scala Story.


  6. Scala Times Issue #518

    Scala Center Roadmap for 2024. Maciej Gorywoda - My Scala Story. Vladyslav Pekker - My Scala Story. Nicolas Rinaudo - My Scala Story. Adam Warski - My Scala Story.


  7. Scala Times Issue #517

    #1BRC in Scala & Scala-Native. Errors happen. Can we get rid of them using ZIO Test?. Scala IO, Feb 15th-16th, Nantes, France. Functional stream processing workshop before Scalar, Mar 20th, Warsaw, Poland. Scalar, March 21st - 22nd, Warsaw, Poland.


  8. Scala Times Issue #516

    GraphQL in Scala: Handling side effects. Type class constraints in object algebras. Migrating event sourced Akka application from CockroachDB to AlloyDB. Jakub Kozłowski - My Scala Story. Scala 3: My migration journey.


  9. Scala Times Issue #515

    Deriving Tail Recursive Fibonacci. Virtual Threads Looming with Adam Warski. Scala Meetup, Jan 31st, Hamburg, Germany. Scala Meetup @ MOIA feat. VirtusLab, Feb 1st, Berlin, Germany. Scala IO, Feb 15th-16th, Nantes, France.


  10. Scala Times Issue #514

    Kotlin from Scala perspective: Advent Of Code 2023. Partially applied functions and currying. GraphQL in Scala: Advanced Schema Generation. Async File IO. Update NextDNS with a Scala CLI script.


  11. Scala Times Issue #513

    Scala 2 Macro Tutorial. A Beginner's Guide to GraphQL in Scala. Writing modular application using the Kyo library. What Can Scala Learn from Rust?. Scala IO 2024, Feb 15th-16th, Nantes, France.


  12. Scala Times Issue #512

    Scala's great ecosystem. What Can Scala Learn from Rust?. Scala IO 2024, Feb 15th-16th, Nantes, France. Scalar 2024 CFP, March 21st-22nd, Warsaw, Poland. LambdaConf 2024, May 4th-10th, Estes Park, Colorado.


  13. Scala Times Issue #511

    Designing a (yet another) retry API. The compilation cost of implicits. Scala Survey Results 2023. Get started with Scala. The X-Ray Mode.


  14. Scala Times Issue #510

    IntelliJ Scala Plugin 2023.3. How to avoid For-Comprehension Pitfalls in Scala. My migration journey. #89 Algebraic Effects with Kyo: Happy Path Programming. Scala in the City, Dec 14th, London.


  15. Scala Times Issue #509

    Type class derivation with ZIO Schema. Scala traits vs enums for ADTs. Practical Type-Level Programming in Scala 3. Extension of Erased Values in Scala 3. For-Comprehension Use Cases in Scala.


  16. Scala Times Issue #508

    Effective Test Parameterization with ScalaTest Tables. Indoor Vivants: Scala Native and Swift: building Twotm8 MacOS app. Entry 1: fs2, gRPC, Triton Inference Server. Poll: Semiauto derivation in circe for Scala 3. Introduction to Functors With Scala 3.


  17. Scala Times Issue #507

    Scala Left Fold Parallelisation - Three Approaches. Advent of Code 2023. Helix and Scala. 10% discount for Functional Scala, Nov 30th - Dec 1st, London. LambdaConf 2024, May 4th-10th, Estes Park, Colorado.


  18. Scala Times Issue #506

    In Scala 3, use 4 Spaces for Indentation. Writing a Chat With Akka. How to retry a Future in Scala. 10% discount for Functional Scala, Nov 30th - Dec 1st, London. LambdaConf 2024, May 4th-10th, Estes Park, Colorado.


  19. Scala Times Issue #505

    Getting started with ZIO, part 3. Laminar & Scala.js Full Stack Demo & More. Harness the power of Web Components with Scala and Laminar. Rendezvous Benchmark Analysis: When Threads (Don't) Meet. How scala-cli Shines in Automation.


  20. Scala Times Issue #504

    Custom logic from Accept header with Tapir. Using Nix to Develop and Package a Scala Project. Scala Center Activity Report for 2023 Q3. How to convert an Option to an Either in Scala. Free support for Scala 2 to 3 migration.


  21. Scala Times Issue #503

    Tell us which errors bug you the most. Videos from Scala Days 2023. Schema management with Scalameta. Art of Scala, Nov 17th, Warsaw. 10% discount for Functional Scala, Nov 30th - Dec 1st, London.


  22. Scala Times Issue #502

    In Defence of Mocks. Turning actors inside-out. Learn how to package your Scala application with ease. Why on earth a ZIO IO monad for Scala?. 10% discount for Functional Scala, Nov 30th - Dec 1st, London.


  23. Scala Times Issue #501

    TestContainers in Scala: Use Integration Tests for building your services. Scala Made Simple for Beginners. Integration testing the Typelevel toolkit. Why I find Scala so amazing. I got interviewed for a FAKE Scala job....


  24. Scala Times Issue #500

    IntelliJScala @ Scala Days 2023 Madrid. OOP classes vs Higher-order Functions (HOFs). Work-in-Progress Scala 3 Specification. 10% discount for Functional Scala, Nov 30th - Dec 1st, London. LambdaConf 2024, May 4th-10th, Estes Park, Colorado.


  25. Scala Times Issue #499

    State of Scala 2023 by ScalaCenter and VirtusLab. JDK 21 LTS - All Features Explained!. The Scala Center Fundraising Campaign. So, What's So Special About The Mill Scala Build Tool?. Kyo: Toolkit for Scala Development.


Organizing an event?
Promote it with
Scala Times.
The Scala Times reader?
Get a banner!
Got a tip?Send it in!
Follow us on Twitter.
Curated by SoftwareMill.
We are hiring.
And taking on projects.