Scala Digest. Issue 7

Scala Digest. Issue 7

Hello, Habre! We – Roma, Nastya and Karina – Tinkoff backend developers, we write code in Scala and burn with the desire to popularize it.

We collect and aggregate news from a variety of sources including Scala Times, Petr Zapletal’s blog and channel Scala Nishtyaki, we add additional news and our own comments. We derive our motivation from the desire to develop and share the acquired knowledge. Any feedback is welcome! (ウ ◕‿◕ )ウ

Releases

We have collected the latest updates of popular and useful libraries for a couple of months:

Tinkoff Scala Meetup & Open Source

A rubric for metamaps and releases of libraries and frameworks, born in the bowels of the Tinkoff Scala community.

It will be held on August 5 in Kazan Tinkoff IT-fest. The program includes presentations from the areas of QA, Java, Mobile and Scala, as well as discussions, debates and various fun activities. For example, our lead developer Ivan Lyagaev will tell you what Project Loom is and what problems it solves and what problems it doesn’t. To participate, all you have to do is donate any amount over ₽1,000 to the specified charity fund.

Articles

In this section, we share recent articles, repositories, and research that we found interesting. A separate block contains resources where the authors use Scala 3. Enjoy:

  • What is blocking in Loom? A great study by Adam Warski that sheds light on the extent to which Project Loom is poised to lead us into the world of non-blocking operations. Here’s a little overview of how Loom works, as well as I/O in operating systems.

  • SIP – Coroutines – an obscenely large SIP about implementing a Kotlin-like coroutine in Scala. It is worth reading at least to understand the development vector of modern Scala in the context of competitive programming. Project Loom, IO-monads, and the recent experimental one are also mentioned here developed by softwaremilland a new study from EPFL led by Martin Odersky himself.

  • Chatbot Showdown: LLMs to write Scala applications with Typelevel stack. VirtusLab is once again hosting a competition between neural networks. This time, the best developer of REST services is determined. As one of our colleagues said, “previously, they wrote code for three hours and debugged it for an hour. Now the code is instantly generated by a neuron, instead of having to debate it for half a working day.”

  • gRPC vs. REST – Comparison of REST and gRPC approaches to API construction. Various aspects are compared, starting with the version of the HTTP protocol and ending with the tooling for testing.

  • Data serialization tools comparison: Avro vs Protobuf. This could have been a good article if the author had done more basic research. There was not enough variety in the parameters of the runs and stacks used.

  • An intro to Flow Fields in Scala. Chris Kipp shares how he implemented the code to create the most beautiful art based on the Tyler Hobbs article. “Code is a palette, and a programmer is an artist who creates masterpieces from zeros and ones.” ChatGPT ╰( ͡° ͜ʖ ͡° )つ──☆*:*:・゚’☆

  • 6 Common Misconceptions Around Akka-HTTP / Pekko-HTTP – Dispelling myths about akka-http that are circulating in the Scala community. Or how to say “do it normally – it will be fine” in six different ways.

  • How to implement streaming microservices with ZIO 2 and Kafka — let’s dive into the world of the ZIO 2 ecosystem. A step-by-step, detailed tutorial on how to write a test project with Apache Kafka and ZStream. Get kids away from screens: Bleep is used (see the Tooling column from the previous issue).

  • Interesting patterns to consume ZIO Streams. The author not only touched various places of ZStream and ZSink, but also left visual pictures of exactly how he did it.

  • No More Orphans in Practice – We are trying the original approach in practice 7mind articlesnamely: how to prevent dependency-hell from users at the library design stage.

  • How to write a (completely lock-free) concurrent LRU Cache with ZIO STM – Using the example of a small data structure, we study ZIO Ref. We look for its shortcomings and solve them with the help of ZIO STM.

  • Introduction to optics in Scala – We do not carefully (only Lens, without Prism) consider the Monocle.

  • Excellent Data Validation in Scala – And again we validate the values, imposing restrictions on the types. This time we cross Validated with NonEmptyList.

  • Get Productive with Akka Streams – Basics of akka-streams with a brief introduction to the elements of the Akka ecosystem: integration with actors and alpakka connectors.

  • Go-like channels in Scala: receive, send, and default clauses – Continuation articles about Channel from an experimental Loom-based library for structured concurrency ox.

  • ZooKeeper-less Kafka – The article is not about Scala, but it is no less interesting! Softwaremill reveals why the Zookeeper cluster was needed in Kafka and how new releases function without it.

  • What Is An Effect in Functional Programming.

Articles on Scala 3

  • Scala 3 Macros: How to Read Annotations – a small and pleasant immersion in the API of macros and annotations in Scala 3. We learn to read static instructions in the body of macros.

  • How to mine Scala 3 compiler metadata using TASTy files. The title sounds quite abstract. The article itself is a series of scripts in which artifact names are obtained, their contents are downloaded via coursier, TAST files are extracted and they are decompiled into Scala 3 source code. Such things.

  • Signature polymorphic methods in Scala. Never heard of signature polymorphism? And he is! Seth Tisue talks about what it is, what the implementation was like in Scala 2, and how the implementation was refactored in Scala 3.

Videos and reports

We have collected links to already known and popular as well as anonymous channels and videos about Scala:

  • YouTube Ziverge. The channel has released several videos, including John De Goes’ final talk from ZIO World about the evolution of the runtime. We definitely recommend it for viewing! In addition, Zymposium continues to delight with new releases, this time focused specifically around the growing ZIO ecosystem.

  • Why I keep choosing ZIO! How June’s learning process improved with Scala 3 and ZIO 2.

  • What makes library docs great. Library review: Iron – A call to write clear documentation for your open-source libraries. Analysis of correct decisions and errors on an example iron.

  • Breaking framework chains with vanilla Scala.

Highlights

This block is not always fresh, but the resources that caught our eye are under the banner of “smart pens”. Authors create something interesting, unusual, but not necessarily useful:

  • A Macro Almanac. Kit Langton keeps his promise and continues to write his guide to the world of Scala 3 macros. You can subscribe to the email newsletter with new chapters.

  • Healthy – A small library that runs liveness/readiness tests for Kubernetes on a separate HTTP server. Depends only on the sttp core module.

Tooling

A piece of digest where we talk about new and improved development tools:

Community-movement

A section of curious and interesting events from the world of Scala-society, and we would like to see it voluminous and alive. If we missed something or you have suggestions, we are waiting for you in the comments:

Previous issues:

See you in a month! ♡\( ̄▽ ̄)/♡

The digest was worked on by , , . We look forward to your ideas, suggestions, and feedback! <( ̄︶ ̄)>

Related posts