READING
Make Impossible States Unrepresentable: Network Edition!
Soundness provides appropriate types for working with all kinds of data. Network entities (email addresses, URLs, ports, IP addresses, MAC addresses, etc) are important in areas of software development, and it would be entirely inappropriate to represent these as strings and integers. So Nettlesome
provides representations for all of these types.
Jon Pretty (@propensive)
|
Ten things I like about Scala 3
Enums (and GADTs), opaque types, inlines, macros, "then", polymorphic function, improved tuples, extension methods, Scala 2.13 interop, and optional braces syntax.
Eugene Yokota (@eed3si9n)
|
Compiling Bad Code
A compiler plugin which lets you compile bad code! You can write unit tests for every fragment of code you want the compiler to reject. You can test that your inline or macro code emits the right message at compiletime.
Jon Pretty (@propensive)
|
The ZIO 2 “mental model”
My initial notes on ZIO 2 mental model and best practices. Please note that I assume that you already have some exposure to ZIO, so I don’t take much time to review concepts like the ZIO R, E, and A parameters.
Alvin Alexander (@alvinalexander)
|
|
|
VIDEOS
Tapir Tutorial - part 4: Error Handling
How to handle expected and unexpected errors, write proper server logic, and generate OpenAPI specification that correctly reflects your error model.
Adam Warski (@adamwarski)
|
Turbocharging web socket integration for Tapir
We love to use Tapir for the rapid development of Web APIs. Recently, we noticed it considerably impacted the performance of a web socket server (increased latency, lower throughput, heightened CPU usage). We managed to alleviate the slowdown almost entirely (reducing the overhead to a minimum - much less latency and CPU usage, greater throughput - performance rivalling a plain cats-effect/http4s/fs2 stack).
Kamil Kloch (@kamil_k)
|
Diamond Architecture: Lessons Learned
We will discuss the importance of using the Tagless Final pattern in the Diamond Architecture to improve code modularity and flexibility. The Diamond Architecture prioritises maximum cohesion principles. This is crucial for crafting code that is both comprehensible and adaptable to complex systems. We will now examine how the architecture and SBT plug-ins and tools collaborate to assist developers in streamlining their workflows, simplifying code reviews, and maintaining codebase consistency.
David Amancio
|
Mirrors for operations, not data
Can we derive endpoints from just a trait definition?
One of Scala's strengths is domain modelling, and from a data definition, we can derive generic information in a Mirror, e.g. to generate type classes. For operations (such as endpoints) there is less support from metaprogramming, so we often create DSLs to describe them. I propose that we can extend Mirrors to operations, and use the most natural DSL of all - plain trait definitions.
Jamie Thompson (@bishabosha)
|
Discover SiriusXM new streaming platform
Julien Truffaut chats with Luka Jakubowicz and Damian Mazurkiewicz from SiriusXM, a leading audio entertainment company in North America. They discuss SiriusXM's use of Scala 3, Smithy for API development, and building a new streaming platform.
Luka Jacobowitz and Damian Mazurkiewicz (@dmazurio)
|
|
RELEASES
bleep 0.0.4
Bleep uses coursier to enable you to write essentially portable Bloop json files without the boilerplate. This release bring bleep up to date with newest bloop, newest graalvm native-image, and a few bugfixes.
Bleep contributors
|
IntelliJ Scala Plugin 2024.1.24
Binary literals supported in Scala 3.5 and 2.13.13, improved braceless syntax support, fixed the Scala 3 issue where renaming parameters broke wildcard types. Additionally, the debugger now handles many lambdas in the same line.
JetBrains (@jetbrains)
|
ops-mirrors
Scala 3 makes it even easier to write expressive code that feels like it belongs in a dynamic language, but stays aggressively type-safe, improving your productivity. Towards this style, I'm introducing ops-mirror, a micro-library for reflection of method signatures, for example to generate schemas for HTTP endpoints from trait definitions.
Jamie Thompson (@bishabosha)
|
FastScala
The FastScala web framework allows you to do fast web application development in Scala.
David Miguel Antunes
|
setup-sbt GitHub Action
MacOS 13 and 14 runner images runner images on GitHub Actions are missing sbt runner script. - uses: sbt/setup-sbt@v1 provides a one-liner workaround to this incovenience.
Eugene Yokota (@eed3si9n)
|
|
|
|