@_felipera

This week in #Scala (Nov 4, 2024)

Welcome to the new edition of #ThisWeekInScala!
This blog keeps you updated with the latest Scala and Reactive programming news.

This week in #Scala (Sep 23, 2024)

Welcome to the new edition of #ThisWeekInScala!
This blog keeps you updated with the latest Scala and Reactive programming news.

This week in #Scala (Sep 30, 2024)

Welcome to the new edition of #ThisWeekInScala!
This blog keeps you updated with the latest Scala and Reactive programming news.

Scala with Cats 2

Scala with Cats 2 update in progress, focusing on Cats 2 features like Parallel for improved error handling.

This week in #Scala (Oct 14, 2024)

Welcome to the new edition of #ThisWeekInScala!
This blog keeps you updated with the latest Scala and Reactive programming news.

This week in #Scala (Oct 28, 2024)

Welcome to the new edition of #ThisWeekInScala!
This blog keeps you updated with the latest Scala and Reactive programming news.

tag-based back publishing with sbt

sbt-ci-release 1.9.0 is released, implementing tag-based back publishing support.

Scala 3 Manifesto 0.1.0

Over the weekend, I created Scala 3 Manifesto 0.1.0, a small library to re-implement scala.reflect.Manifest in Scala 3.
...
scala.reflect.Manifest

Postmortem of Scala 3.6.0

Incident Date: October 18th, 2024 Nature of the incident: Accidental release of 3.6.0-RC1 under 3.6.0 on Maven Central
from Medium
3 weeks ago
Scala

(In)Validating Library Design. DomainDocs4s: DDD, Reflection & Classpath Scanning.

This post goes through the process of transforming that idea to a draft of library design and then checking its technical feasibility.
...
So what do we want to build exactly?
...
Scala Compile-Time Reflection - Similarly as with listing the symbols, we can use TASTy files and TASTy inspector to access the code almost directly.
...
We have little choice here, as Scala annotations are not available through Java reflection and so we are stuck with Scala reflection.And if we want to be Scala 3 compatible, we are limited to compile-time reflection based on TASTy.

(In)Validating Library Design. DomainDocs4s: DDD, Reflection & Classpath Scanning.

Last week I got an idea.
...
This post goes through the process of transforming that idea to a draft of library design and then checking its technical feasibility.

kebab-case: Understanding thread pools through cats-effect- the IORuntime

Blocking and computing
The snooze task didn't do any calculating - its only operation was a Thread.sleep - so its thread didn't occupy a processor in order for the task to progress.

blog-hashing/README.md at main mpilquist/blog-hashing

The fs2-io library provides support for computing cryptographic hashes, e.g. SHA-256, in a functional way.

The journey of an internet packet: Exploring networks with traceroute

We often take for granted that when we try to connect to a server, the connection will work.But that is not always the case.

A Manifesto for Error Management

IN THE FIRST POST of this series I set the scene for error handling in Scala.

Scala's Role in the Future of Energy Innovation

The energy industry is at a pivotal moment, teetering on the edge of a technological revolution.

The Tri-Z Architecture: a Pattern for Layering ZIO Applications in Scala

After working on several different services and spending a lot of time improving the code to make it easier to use, I discovered a pattern for layering my applications that I found very useful.

Direct-style Bootzooka: 2024 update | SoftwareMill

As technology never stops evolving, it's time to update Bootzooka, our webapp/microservice application template based on TypeScript and Scala.

Tuning ZIO for high performance

Let's start with a disclaimer.What is discussed in this article is not the ultimate truth: how to make your application faster highly depends on what your application is actually doing.

How to extract all TODOs from code using Scala-CLI

In recent years, Scala CLI has replaced sbt for my home and smaller work projects.Scala CLI lacks the extensive plugin ecosystem of sbt, so you need to write any additional functionalities yourself.

A more intuitive approach to the State Monad in Scala

The ' Functional programming in Scala' book (aka ' the red book') defines a state transformation as a function with this signature:

Micro library for retries in cats-effect using Scala extensions

This blog entry will show how to add a simple retry mechanism to cats-effect (CE) using Scala 3 extensions.

Invariant.blog

how to see the trees using the Scala compilers

Here's a memo on how to show trees using the Scala compilers.

inoio gmbh | Kafka Fundamentals

Because we're using Apache Kafka again and again in our projects and so far I didn't find the sufficiently compact in one place - I have taken the time to prepare this for myself/us/you.

inoio gmbh | Kafka compaction tuning

Kafka offers two cleanup policies, which seems simple enough: "delete", where data is deleted after a certain amount of time, and "compact", where only the most recent value is kept for any key.

inoio gmbh | Eventual Consistency via Kafka Transactional Outbox

Our systems today are typically distributed, and sometimes integrated via an event bus such as Kafka.We store data in a database and publish events to inform other systems of changes.

PureConfig with Scala 3 - Tutorial

It took some time, but the PureConfig on Scala 3 has almost reached the point of feature parity with its Scala 2 implementation.It's a good moment to learn why it's useful and how it works!

inoio gmbh | Crafting types with Scala 3 macros - Part 1: Introduction to macros

With the release of Scala 3, one of the biggest changes to the language revolves around metaprogramming: Inline-functions, match types, generic-programming tools like tuple types and Mirror s, as well as a new macro API have been added to make code generation a major concern of Scala.
for comprehension is scala magic!

ZIO 2: Using Either with ZIO in a Scala for-expression

Use ZIO in Scala for-expressions with Either to manage errors effectively.
Easy to use API to call processes in Scala

Soundness: Guillotine

A small library for executing stuff

Purify Your Tests III: Lean, Mean Testing Machine

In the last part we saw how to make our code more declarative, and the tests more functional by introducing type parameters for the inner data flowing through our code.

GraphQL in Scala: Role-Based Access Control

Today, I'm going to answer a question asked by Łukasz Biały on Twitter:
Is there a way to get field-level RBAC (Role-Based Access Control)?
...
It turns out there is!

WebSocket chat using structured concurrency, Ox & Tapir | SoftwareMill

A chat application is often used to demonstrate various approaches to working with WebSockets.We'll follow suit; below is a quick tour of how such a service can be implemented in direct style using:

1. Hello, world! - tapir 1.x documentation

Going forward, we'll edit a hello.scala file.
Let's start by adding the tapir dependency.
First, you'll need the module to describe the endpoint.
Secondly, you'll need an HTTP server implementation.

On Modern Error Handling (Not Just in Java): Monads, Effects and Project Amber - JVM Weekly vol. 81

Today will be about approaches to error handling - both in the industry as such and new proposals for Java.And we'll start it all off with Monads.
...
What is a Monad?

Purify Your Tests: 2 Parametric, 2 Declarative

In the last part we learned how to purify our tests using type parameters.In this and following parts we'll see some further benefits of adding type parameters this way.

Spec-first and code-first, hand in hand

Yesterday, I released smithy4s-deriving, a Scala 3-only library that provides meta-programming-based derivation mechanisms for the core abstractions of Smithy4s.
Always a great way to keep up with the Scala community

This week in #Scala (Mar 18, 2024)

https://miro.medium.com/v2/resize:fit:1200/1*bPQnM2r6SYEzTbFe70vl8w.jpeg
Welcome to the new edition of #ThisWeekInScala!
...
"This week in #Scala (Mar 18, 2024)" is published by Petr Zapletal.

Typed Tagless Final, for real!

Every so often, a software technique takes the center stage of attention and becomes the source of countless articles, tutorials, and conference talks.
Clear example of how to read and write to a map in a concurrent use case

Using Cats Effect's MapRef

(all code samples can be run using scala-cli)

Using Cats Effect's MapRef

(all code samples can be run using scala-cli)
Excited for the REPL and CLI improvements in Scala 3

Scala 3 Roadmap for 2024

Scala will adopt a six-week release cycle to provide fixes and improvements more predictably and quickly.

Scala 3 Roadmap for 2024

Scala will adopt a six-week release cycle to provide fixes and improvements more predictably and quickly.

Introduction to Bazel for Scala developers

The build time of a project has a significant impact on a team's development efficiency.The larger the code base, the longer it takes to build.

Two-phase consensus with functional Scala

Two-phase consensus is defined by these dual prepare and commit/abort phases.The endless-transaction library captures this pattern in tagless-final abstractions.

Two-phase consensus with functional Scala

Two-phase consensus is defined by these dual prepare and commit/abort phases.The endless-transaction library captures this pattern in tagless-final abstractions.
Who's moving to Pekko? I am going to typelevel stack

What to do with your End Of Life Akka? | SoftwareMill

In September 2022 Lightbend surprised the Scala community by announcing the Akka license change for all future releases from Apache 2.0 to "source available" Business Source License (BSL) v1.1.

What to do with your End Of Life Akka? | SoftwareMill

In September 2022 Lightbend surprised the Scala community by announcing the Akka license change for all future releases from Apache 2.0 to "source available" Business Source License (BSL) v1.1.
Nice introduction to state with cats.effect.Ref

Flavors of shared state in Cats Effect

In this post, we will explore the various ways to share state in a Cats Effect application.

Flavors of shared state in Cats Effect

In this post, we will explore the various ways to share state in a Cats Effect application.
You should probably read this if you are using Play Framework

General - 3.0.x

§How Play Deals with Akka's License Change

General - 3.0.x

§How Play Deals with Akka's License Change
I really appreciate post-mortems that are made public, great learning

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.

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.
This summary is always great content to keep up with Scala community

This week in #Scala (Mar 11, 2024)

https://miro.medium.com/v2/resize:fit:1200/1*bPQnM2r6SYEzTbFe70vl8w.jpeg
Welcome to the new edition of #ThisWeekInScala!
...
"This week in #Scala (Mar 11, 2024)" is published by Petr Zapletal.
Always nice to get information on concurrency and parallelism

Threads, ThreadPools and Executors-Multi Thread Processing In Java

https://miro.medium.com/v2/da:true/resize:fit:1200/0*z2AeifeuphQZfatc
Concurrency is one of the most complex problems we (developers) can face in our daily work.
Modern REST in Scala

Master Scala Rest APIs in 3 Simple Concepts: Illustrated Guide with Tapir, http4s, and Circe! (2/2)

Auto Derivation Magic simplifies JSON to Scala conversion by leveraging case class attributes.
Importing required objects like io.circe.generic.AutoDerivation and sttp.tapir.generic.auto.SchemaDerivation enables auto-derivation for JSON encoding and decoding.
Nice to see more scala 3 content

Master Scala Rest APIs in 3 Simple Concepts: Illustrated Guide with Tapir, http4s, and Circe!

Tapir, http4s, and Circe are game-changing Scala libraries for Rest APIs and SwaggerUI docs generation.
Scala ecosystem leans towards Tapir, http4s, and Circe for building backend systems due to production-ready and actively maintained status.
[ Load more ]