This March, we're bringing you a curated lineup of the most exciting Scala and AI events from around the world. Highlights include SCALAR Conference in Warsaw, NVIDIA GTC, QCon London, and SXSW's tech tracks, offering everything from deep technical talks to hands-on AI and functional programming sessions. Whether you're sharpening your Scala skills, exploring AI in production, or connecting with global developers, this month's edition has something for everyone. Don't miss the chance to learn, network, and level up your expertise
Which Algorithm Is This? If you step back, this maps almost perfectly to the Top K Frequent Elements problem.We usually solve it for integers in a list. Here, the "elements" are audience profiles age and body-type combinations. First, define what an audience profile looks like: case class Profile(age: Int, height: Int, weight: Int) What we want is a function like this:
The request for its API val request = Request[IO](Method.POST, uri"/jobs")val api = new AsyncJobApi // this will not compile since AsyncJobApi is not defined yet Minimal implementation to make it green: class AsyncJobApi Red test: The API should return a 202 Accepted response: "POST /jobs returns Accepted" in { val request = Request[IO](Method.POST, uri"/jobs") val api = new AsyncJobApi api.routes.orNotFound.run(request).asserting : response => response.status shouldBe Status.Accepted} Make it green: class AsyncJobApi { val routes: HttpRoutes[IO] = HttpRoutes.of[IO] : case req @ POST -> Root / "jobs" => Accepted()} 5.2 Add headers (Trivial Implementation) Red test: add X-Total-Count and Location headers with job ID (only the assertion is shown)
Over the past months, I've watched two clients move from Scala (Play, Slick, Akka, Akka Http ... ) to Kotlin (Spring, JPA/Hibernate). In my current role, an engineering decision was made to move away from Scala. The decision was driven less by Scala's shortcomings and more by long-term career risk management: leaders understandably favor stacks (Java/Kotlin) that maximize hiring flexibility in a volatile market.
We're pleased to announce the release of Scala 3.8 - a significant release that modernizes the Scala ecosystem and paves the way for Scala 3.9 LTS. This release introduces a standard library compiled by Scala 3 itself, stabilizes highly-anticipated features like Better Fors (SIP-62) and runtimeChecked (SIP-57), and introduces experimental features including flexible varargs and strict equality pattern matching. A runtime regression was detected after publishing Scala 3.8.0 artifacts.
High-level view of the travel search workflow, highlighting parallel searches, explicit decision points, and iterative refinement. In Scala, we define this workflow using Workflows4s, encoding both state and transitions explicitly in the type system. Instead of opaque state blobs or untyped contexts, the state of the process is represented using algebraic data types - types like Started, Found, Sent, and Booked - each corresponding to a distinct point in the workflow's lifecycle.
Imagine you're working with a third-party library that provides a User class. You need to add JSON serialization to it, but you can't modify the source code. Of course you can create a wrapper class or extend it, but that feels clunky and breaks existing code that expects the original type. This is where type classes shine. They're one of Scala's most powerful patterns, and they're the secret ingredient in popular libraries like Cats, Scalaz, and Circe.
Photo by Goran Ivos on Unsplash We're excited to announce that Scala 2.13 is now in Public Preview (PuPr) on Snowpark for Scala client, UDxF and Stored Procedures! This release brings the massive collections overhaul, performance improvements, and powerful language enhancements of Scala 2.13 to the Snowflake AI Data Cloud. Where Can You Use Scala 2.13 in Snowflake? Snowflake SQL Snowpark Scala client library Why Upgrade?