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