A free, once-weekly Scala news flash. Easy to unsubscribe. Goes out every Thursday.
February 22nd, 2024, ISSUE 520

READING

My team built and productionized a custom rate limiter in Scala

A year ago, when I was leading a "Digital Platform" team at a large bank, we built and productionized a custom rate limiter in Scala. This is the story of why and how we did it.
Bilal Fazlani (@bilal_fazlani)
Benchmarking Tapir: Part 1

First part of a series where I analyze Tapir's overhead on different backends.
Krzysztof Ciesielski (@kpciesielski)
desert part 1 - features

This is the first part of a series of blog posts about my serialization library, desert.
Daniel Vigovszky (@dvigovszky)
WebSockets in Http4s

The WebSocket protocol enables persistent two-way communication between a client and a server where packets can be passed in both directions without the need for additional HTTP requests.
Daniel Ciocîrlan (@rockthejvm)
Improving my Distributed System with Scala 3 (Part 2)

In this article, we’ll be discussing some major changes around Bridge Four’s state management, its new-and-improved consistency guarantees, and other features and improvements I’ve added since.
Christian Hollinger (@chollinger93)
Tomas Mikula - My Scala Story

Tomas Mikula is a Lead Software Engineer, author of the Libretto library.
Tomas Mikula (@tomas_mikula)
Optimizing Functional Walks of File Trees

FS2 and Cats Effect go to great lengths to provide high level, compositional, performant APIs. Nonetheless, when performing hundreds of thousands of operations, care must be taken to keep performance acceptable. Throughout this post, we gradually refactored a simple implementation for performance, exploring different evaluation techniques and their impacts on performance.
Michael Pilquist (@mpilquist)
Automagic Scala Migrations

This report is intended as a supplement to the tools’ documentation and might help others in their journey to automatic scala migrations - and maybe a reader will have some suggestions for me.
Benjamin M. (@cptwunderlich)
Our journey begins

It's been a longstanding dream of mine to make C and Scala play nice. While Scala is one of my favorite languages, it tends to be trapped in the semi-walled garden of the JVM. I want to write apps that benefit the opensource community, like applications for KDE.
Mark Hammons (@MarkHammons)
Crossing those hills

Second part of the series.
Mark Hammons (@MarkHammons)

VIDEOS

Game development in Scala.js with David Smith

David Smith and I discuss game development in Scala.js / Scala 3 using the game engine Indigo and the front end framework Tyrian.
Sébastien Doeraene, David Smith

EVENTS

Wroclaw Scala User Group, Feb 26th, Wrocław, Poland

Future of effects in Scala & Moving a query engine from Akka to ZIO.
Wrocław Scala User Group
ScalaWAW #31, Feb 27th, Warsaw, Poland

Come and watch talks by Tomasz Kogut and Łukasz Biały.
ScalaWAW (@scalawaw)
Functional stream processing workshop before Scalar, Mar 20th, Warsaw, Poland

Stream processing lies at the heart of many complex problems. Learn to solve them with fs2, the most sophisticated functional streaming library. This workshop will demystify the art of functional stream programming. We’ll see how cats-effect and fs2 excel in event-driven architectures and tackle complex concurrency challenges; all the while maintaining performance, resource safety and error recovery. As a final challenge, we’ll use our knowledge of event-driven systems and concurrent processes to code and animate a simulation game in Scala 3.
Zainab Ali (@_zainabali_)
Full-stack Scala 3 with the ZIO stack workshop before Scalar, Mar 20th, Warsaw, Poland

Lear about structuring a full-stack application for the ZIO stack; writing effectful, purely-functional modules for database interaction and web servers; separating business logic from the "operational" parts of an application; adding configuration, testing, refactoring; integrating Laminar with ZIO for a powerful frontend, on top of ScalaJS; adding full-stack features to an application; understanding patterns and anti-patterns while working with ZIO; building and configuring for dev, staging, prod.
Daniel Ciocîrlan (@rockthejvm)
Scalar, March 21st - 22nd, Warsaw, Poland

Join the greatest Scala conference in Central Europe!
Scalar Conference (@scalarconf)
LambdaConf, May 4th-10th, Estes Park, Colorado

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

The CFP will close at February 24, 2024 (Saturday) at 23:59.
ScalaMatsuri (@ScalaMatsuri)

RELEASES

secret

A functional, type-safe and memory-safe class to handle secret values.
David Geirola
SBT BOM

A plugin for SBT for dealing with Maven BOM in SBT projects.
SBT BOM contributors
byte-pack

Byte Pack is a library to pack and unpack scala case classes into IArray[Byte].
Romain Reuillon





  1. Scala Times Issue #542

    Effective Error Handling. Developer Ecosystem Survey 2024. Pseudorandom Acts of Kindness. Scala 3 Metaprogramming Learning Resources. Scala to WebAssembly: How and Why.


  2. Scala Times Issue #541

    Tapir documentation improvements. Checked exceptions: fixed!. Use cases for Scala. ScalaWAW #33 - beach party! Jul 25th. Lambda World. Oct 2nd - 4th, Cadiz, Spain.


  3. Scala Times Issue #540

    PureConfig with Scala 3 - Tutorial. Developer Experience in Open Source Software. "Learn Functional Programming The Fast Way!" PDF is free. ScalaBridge London @ SiriusXM!, Jul 18th. ScalaWAW #33 - beach party! Jul 25th.


  4. Scala Times Issue #539

    YAML as a valid Scala 3 code. ExecutionContext.parasitic and Friends. ScalaBridge London @ SiriusXM!, Jul 18th. Lambda World. Oct 2nd - 4th, Cadiz, Spain. Faster and less mysterious sbt builds with Develocity.


  5. Scala Times Issue #538

    Make Impossible States Unrepresentable: Network Edition!. Ten things I like about Scala 3. Compiling Bad Code. The ZIO 2 “mental model”. JetBrains course: Functional Programming in Scala.


  6. Scala Times Issue #537

    A Logic Circuit Simulator with Cats-Actors. Magda Stożek - My Scala Story. Lambda World. Oct 2nd - 4th, Cadiz, Spain. ScalaBridge London Jun 20th, 2024. Armored type safety with Iron.


  7. Scala Times Issue #536

    Scala 3 improvements in Metals (and hopefully, IntelliJ IDEA). Purify Your Tests III: Lean, Mean Testing Machine. 12 years of the com.lihaoyi Scala Platform. Scala Is Not Going Anywhere. OpenTelemetry With Scala Futures.


  8. Scala Times Issue #535

    GraphQL in Scala: Role-Based Access Control. WebSocket chat using structured concurrency, Ox & Tapir. Tapir tutorials, part 1. Scala 2.13 LTS planning. A Sighting of filterA in Typelevel Rite of Passage.


  9. Scala Times Issue #534

    Lagom is approaching end of life: possible migration paths. WebSockets in Scala, Part 2: Integrating Redis and PostgreSQL. Scala service combined with PostgreSQL, Flyway, Doobie, Ciris, IO(Cats Effects), Http4s…. Akka 24.05: More Security. More Performance. More Efficiency.. Forking and Interruption in ZIO.


  10. Scala Times Issue #533

    Apache Pekko becomes a Top-Level Project. Scala Meetup at Evolution. Purify Your Tests: 2 Parametric, 2 Declarative. Introducing TARP Stack – Tapir, React and PostgreSQL. IO effect tracking using Ox.


  11. Scala Times Issue #532

    Duchess at Scala.io. Purify Your Tests. Tuning ZIO for high performance. JetBrains Joins the Scala Center Advisory Board!. Introducing com-lihaoyi Issue Bounties.


  12. Scala Times Issue #531

    Que es un Higher-Kinded Type de Scala?. ScalaMatsuri, June 7th-9th, Tokyo, Japan. Custom-compile errors with a venegance. Data Engineering at Netflix using Apache Spark and Flink.


  13. Scala Times Issue #530

    Direct-style Effects Explained. How to build AI apps with Scala 3 & Besom. Spec-first and code-first, hand in hand. ScalaMatsuri, June 7th-9th, Tokyo, Japan. Direct Style Scala Stack - An Experiment.


  14. Scala Times Issue #529

    Jacek Kunicki - My Scala Story. Kalix tutorial: Building invoice application. Safe direct-style Scala: Ox 0.1.0 released. LambdaConf, May 4th-10th, Estes Park, Colorado. LambdaConf - The Grand Hackathon Finale, May 10th.


  15. Scala Times Issue #528

    Lean Scala: Reddit discussion. Learn Functional Programming The Fast Way!. Caliban on Tailcalls's GraphQL benchmarks. LambdaConf, May 4th-10th, Estes Park, Colorado. LambdaConf - The Grand Hackathon Finale, May 10th.


  16. Scala Times Issue #527

    How implicits are useful . ScalaWAW #32, Apr 18th, Warsaw. LambdaConf, May 4th-10th, Estes Park, Colorado. LambdaConf - The Grand Hackathon Finale, May 10th. ScalaMatsuri, June 7th-9th, Tokyo, Japan.


  17. Scala Times Issue #526

    Announcing the Scala Ambassadors initiative. Supporting high-performance response streaming in Shardcake. IntelliJ Scala Plugin 2024.1 Is Out!. LambdaConf, May 4th-10th, Estes Park, Colorado. ScalaMatsuri, June 7th-9th, Tokyo, Japan.


  18. Scala Times Issue #525

    Scams in the Scala Community update. Why we bet on Scala at SwissBorg. Capture Checking in Scala 3.4. Why Effects libs? . Benchmarking Tapir: Part 3 (Loom).


  19. Scala Times Issue #524

    Tapir dropping Scala 2.12 support. Scala 3 Roadmap for 2024. Leveraging sbt remote caching on a big modular monolith. Krzysztof Ciesielski - My Scala Story. The Montréal Effect: Why Programming Languages Need a Style Czar.


  20. 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.


  21. 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.


  22. 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.


  23. 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.


  24. 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.


  25. 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.


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