Articles marked as 'Intermediate' difficulty
A Backtracking Sudoku Solver in Scala
13 min read • • Explanation
Master solving Sudoku and other constraint-satisfaction problems with recursive backtracking in Scala
Founder | Rock The JVM
A Distributed Code Execution Engine in Pekko with Scala
33 min read • • Guide
A practical guide to building a distributed system with Scala and Pekko: learn how to run other people's code in a real-world scenario
A Fresh Perspective on Monads: Generalizing Chained Computations
6 min read • • Guide
Explore a fresh perspective on monads: Discover new angles on this familiar concept with Rock the JVM
Founder | Rock The JVM
A Functional Load Balancer with Scala, http4s and Cats Effect
38 min read • • Guide
Build an application load balancer with Scala & Cats Effect: achieve efficiency and concurrency with included tests
A Scala Project with Akka, Cats, and Cassandra
29 min read • • Guide
Akka, Cats, and Cassandra in a larger Scala project integrating multiple pieces of the Scala ecosystem
Founder | Rock The JVM
Akka Streams Backpressure Explained
10 min read • • Guide
Discover how Akka Streams implements backpressure, a key component of the Reactive Streams specification, in this detailed demonstration
Founder | Rock The JVM
Akka Typed: Actor Discovery with Akka Receptionist
11 min read • • Guide
A common pattern in Akka Typed: discovering how to find actors not explicitly passed around
Founder | Rock The JVM
Akka Typed Actors: Stateful and Stateless
7 min read • • Guide
Akka Typed has transformed actor creation: in this article, we explore various methods for managing state within Akka actors
Founder | Rock The JVM
Akka Typed: Adapting Messages Explained
8 min read • • Guide
Learn how to organize code, messages, domains, and logic in an Akka application with Scala
Founder | Rock The JVM
Akka Typed: How the Pipe Pattern Prevents Anti-Patterns
6 min read • • Explanation
Discover how Akka Typed revolutionizes actor protocol definitions and dramatically enhances actor mechanics
Founder | Rock The JVM
ADTs (Algebraic Data Types) in Scala
10 min read • • Explanation
Discover ADTs (Algebraic Data Types) in Scala: Answers to all your questions about this essential concept
ALL the Joins in Spark DataFrames
7 min read • • Explanation
Spark supports more types of table joins than you might expect: discover the different join options in this article
Founder | Rock The JVM
An Introduction to Monads in Scala
9 min read • • Explanation
A Scala tutorial on Monads that starts with practical needs and builds up from scratch: derive the monad patterns (laws) with no assumptions
Founder | Rock The JVM
Authentication with Scala and http4s: 2FA (Two-Factor Authentication)
23 min read • • Guide
Discover how to implement a two-factor authentication system with one-time passwords (HOTP and TOTP) using Scala and http4s
Authentication with Scala and http4s: OAuth
16 min read • • Guide
Discover how to implement OAuth authentication in Scala with http4s and GitHub as your OAuth provider
Authentication with Scala and http4s
26 min read • • Guide
Learn how to implement HTTP authentication with Scala and http4s: basic, digest, session, and JWT tokens
Broadcast Joins in Apache Spark: An Optimization Technique
7 min read • • Explanation
Broadcast joins in Apache Spark are a highly effective technique for boosting performance and avoiding memory issues, offering great value for optimization
Founder | Rock The JVM
Cats: Essential Type Class Hierarchy Explained
9 min read • • Explanation
Cats is a complex library for Scala: This article deconstructs the major type classes and explains their connections
Founder | Rock The JVM
Configuring http4s Security: Handling CORS and CSRF
16 min read • • Guide
In this article, learn how to configure an http4s server to effectively guard against cross-origin requests and CSRF attacks
Custom Pattern Matching in Scala
6 min read • • Guide
Pattern matching is one of Scala's most powerful features: discover how to customize it and create your own patterns in this article
Founder | Rock The JVM
Elevate Your Tests: Testing Functional Kotlin with Arrow and Raise
18 min read • • Guide
An extensive guide to testing functional Kotlin code using Arrow and the Raise DSL
Eta-Expansion and Partially Applied Functions in Scala
5 min read • • Explanation
Explore the intriguing world of eta-expansion: Discover how methods and functions interact in Scala, revealing insights that can elevate your coding game
Founder | Rock The JVM
Evaluation Modes in Scala Explained
4 min read • • Explanation
Explore core Scala constructs from a fresh perspective and uncover new insights into their use and application
Founder | Rock The JVM
Event Streaming in Apache Pulsar with Scala
11 min read • • Guide
Apache Pulsar is a cloud-native, distributed messaging and streaming platform handling hundreds of billions of events daily: discover its strengths and see how to use Scala with the pulsar4s client library to interact with it
Software Architect | Ververica
Exploiting Implicit Ambiguity in Scala
6 min read • • Explanation
Discover how to use Scala's implicit resolution to enforce type relationships at compile time
Founder | Rock The JVM
Finagle: Twitter's RPC Library for Scala
10 min read • • Explanation
Discover Finagle: a powerful yet deceptively simple library for building distributed systems, offering built-in HTTP support, seamless load balancing, and more
Founder | Rock The JVM
From Akka Streams to Actors and Back
18 min read • • Guide
Discover how to seamlessly integrate Akka Streams with actors using practical code examples
FS2: More Than Functional Streaming in Scala
24 min read • • Guide
Discover the ultimate tutorial on purely functional streams in Scala with FS2
Functional Error Handling in Kotlin: Part 1 - Absent Values
21 min read • • Guide
Master error handling in Kotlin with ease: discover how nullable types and Arrow Option types tackle errors efficiently, whether you're using object-oriented or functional approaches
Functional Error Handling in Kotlin: Part 2 - Result and Either
28 min read • • Guide
Continue your functional error handling journey: explore how to effectively use the Result and Either data types in Kotlin
Functional Error Handling in Kotlin: Part 3 - The Raise DSL
41 min read • • Guide
Wrap up your Kotlin functional error handling journey: discover the Raise DSL in Arrow 1.2.0 for managing typed errors with Kotlin contexts
Functional Parallel Programming with Scala and Cats Effect
25 min read • • Guide
Unlock the full potential of functional parallel processing: A hands-on guide to accelerating performance with Scala and Cats Effect fibers
Getting Started with Scala Slick
20 min read • • Guide
Discover Slick: The popular Scala library for seamless database interactions
gRPC in Scala with FS2 and ScalaPB
21 min read • • Guide
A comprehensive guide to enabling microservices communication with gRPC in Scala
How Akka Typed Incentivizes Writing Good Code
5 min read • • Explanation
Explore how Akka Typed integrates good practices directly into the API
Founder | Rock The JVM
http4s: Unleashing the Power of HTTP APIs Library
29 min read • • Guide
Master functional programming basics: use http4s with the Cats ecosystem to seamlessly create powerful HTTP APIs
Idiomatic Error Handling in Scala
9 min read • • Guide
Error handling can be one of the most frustrating aspects of programming: let's explore how Scala offers better and worse ways to manage it
Founder | Rock The JVM
Immutable Linked Lists in Scala With Call-By-Name and Lazy Values
10 min read • • Guide
Discover how to harness lazy values and call-by-name techniques to craft a fully immutable doubly-linked list in Scala
Founder | Rock The JVM
Kafka 101: Clients Quickly Explained
21 min read • • Guide
Discover tips and code examples to make your Kafka clients run blazing fast
Software Architect | Ververica
Kafka 101: Streams Quickly Explained
31 min read • • Explanation
Apache Kafka is the leading technology for message brokers: Kafka Streams builds a robust stateful streaming system on top of it
Kotlin 101: Context Receivers Quickly Explained
18 min read • • Guide
Explore Kotlin context receivers: a new feature for creating clean and manageable abstractions in Kotlin
Kotlin 101: Coroutines Quickly Explained
31 min read • • Guide
Discover Kotlin coroutines: a powerful tool for asynchronous programming within structured concurrency, and learn about their key features and strengths in this tutorial
Kotlin 101: Flows Quickly Explained
41 min read • • Guide
This article delves into Kotlin Flows: a crucial reactive data structure in Kotlin Coroutines that, once discovered, becomes indispensable
Kotlin 101: Type Classes Quickly Explained
18 min read • • Guide
Discover type classes in Kotlin: a powerful pattern to organize your code for improved readability, maintainability, and flexibility
Learning doobie for the Greater Good
31 min read • • Guide
JDBC struggles with side effects in functional programming: doobie offers a higher-level, effectful API through Cats and Cats Effect
Lenses, Prisms, and Optics in Scala
6 min read • • Explanation
Inspect, extract, and modify deeply nested data structures in Scala with ease: discover a powerful method to handle complex data effortlessly
Founder | Rock The JVM
Mastering Skunk: The Scala Library for Database Interaction
20 min read • • Guide
Learn how to use the Skunk library for type-safe, non-blocking PostgreSQL database interactions
N-Queens in Scala: How to Approach Algorithm Questions
1 min read • • Explanation
Learn how to tackle a Google-style algorithm interview question in Scala using pure functional programming
Founder | Rock The JVM
Objects and Companions in Scala
5 min read • • Explanation
This article is for beginner Scala programmers: an introduction to singleton objects and companion objects, exploring their uses, benefits, and best practices
Founder | Rock The JVM
Organizing Services with ZIO and ZLayers
12 min read • • Guide
ZIO layers (ZLayers) help structure complex services into independent, composable, and easy-to-understand modules: discover how they can simplify your architecture
Founder | Rock The JVM
Refined Types in Scala Quickly Explained
5 min read • • Explanation
Explore how to impose constraints on values at compile time using the Refined library
Founder | Rock The JVM
Repartition vs Coalesce in Apache Spark
5 min read • • Explanation
Clarifying the differences between two essential repartitioning operations in Apache Spark
Founder | Rock The JVM
REST APIs with Play Framework and Scala
15 min read • • Guide
Master the basics of Play Framework to build robust HTTP APIs with Scala in this comprehensive tutorial
Scala 3: Anti-Givens Quickly Explained
4 min read • • Guide
Discover a Scala 3 trick few developers know: leveraging the absence of a given instance to enforce type constraints
Founder | Rock The JVM
Scala 3: Extension Methods Quickly Explained
4 min read • • Explanation
Deconstructing extension methods: one of the most exciting features of the upcoming Scala 3
Founder | Rock The JVM
Scala 3: General Type Projections
7 min read • • Explanation
Scala's general type projections are considered unsound and were removed in Scala 3: discover what this means and how it affects your code
Founder | Rock The JVM
Scala 3: Given and Using Clauses
7 min read • • Explanation
Explore Scala 3's given/using clauses: a crucial feature for modern Scala programming, and learn how to leverage them effectively
Founder | Rock The JVM
Scala 3: Mastering Path-Dependent Types and Type Projections
5 min read • • Explanation
Unlock advanced programming techniques with Scala 3: explore dependent types, methods, and functions in this concise tutorial
Founder | Rock The JVM
Scala 3: Match Types Quickly Explained
7 min read • • Explanation
Scala 3 comes with lots of new features: in this episode, we dive into match types, a powerful tool for pattern matching on types and more accurate type checking
Founder | Rock The JVM
Scala 3: Opaque Types Quickly Explained
4 min read • • Explanation
Explore opaque type aliases in Scala 3 and learn how to define new types with zero overhead
Founder | Rock The JVM
Scala Testing with ScalaTest: A Beginner's Guide to Testing Styles
7 min read • • Guide
In this article, we explore the main testing styles in Scala and ScalaTest: understanding what terms like 'FunSuite' and 'FlatSpec' really mean
Founder | Rock The JVM
Self-Types in Scala: A Quick Overview
3 min read • • Explanation
Self-types are a powerful way to enforce type constraints in Scala: learn to use them effectively in just a few minutes
Founder | Rock The JVM
Semigroups and Monoids in Scala
8 min read • • Explanation
This article provides a gentle introduction to Monoids and Semigroups, exploring functional abstractions and the workings of the Cats library
Founder | Rock The JVM
Stateful Streams with Apache Pulsar and Apache Flink
21 min read • • Guide
Discover how to integrate Apache Pulsar with Apache Flink: perform advanced data enrichment using state from multiple topics
Founder | Rock The JVM
Streaming Analytics with Apache Pulsar and Spark Structured Streaming
13 min read • • Explanation
Explore Apache Pulsar's role in event streaming and computing: discover practical use cases and learn when to integrate advanced computing engines for sophisticated stream processing
Founder | Rock The JVM
The Ultimate Guide to Java Virtual Threads
32 min read • • Guide
Project Loom and virtual threads: Explore how they promise to bring modern concurrency paradigms from Kotlin and Scala to Java, even while still in preview
Types, Kinds, and Type Constructors in Scala
6 min read • • Explanation
Discover Scala's powerful type system: explore type organization, type constructors, and their significance
Founder | Rock The JVM
UDP with Scala and FS2 Explained
29 min read • • Guide
Learn how UDP works and discover how to transition from an old Java NIO implementation to a more modern and expressive API like FS2 in Scala
Understanding Spark DAGs (Directed Acyclic Graphs)
6 min read • • Guide
Discover the essential skill for optimizing Spark performance: mastering the Spark UI and understanding the job execution graph
Founder | Rock The JVM
Understanding Spark Query Plans
6 min read • • Guide
In this article, you'll learn one of the most important Spark skills: reading how your job will run, which is foundational for any further Spark optimization
Founder | Rock The JVM
WebSockets in Scala: Part 1 - http4s
39 min read • • Guide
Learn how to implement WebSockets in Scala with http4s to enable seamless two-way communication between your frontend and backend
WebSockets in Scala: Part 2 - Integrating Redis and PostgreSQL
37 min read • • Guide
Learn how to integrate Redis with Scala using redis4cats and persist records in Postgres with skunk, enhancing your chatroom application with powerful new features
What Is Referential Transparency and Why Should You Care?
7 min read • • Explanation
Discover how referential transparency boosts your productivity as a functional programmer in Scala and why it's crucial
Founder | Rock The JVM
What the Functor? Exploring Functors in Depth
5 min read • • Explanation
Explore one of the most essential concepts in pure functional programming: the Functor, a crucial but abstract idea that will challenge your understanding
Founder | Rock The JVM
Why are Scala Type Classes Useful?
4 min read • • Explanation
FP fans discuss the challenge of type classes in pure functional programming with Scala: why are they difficult, and why do we really need them?
Founder | Rock The JVM
Why Is Contravariance So Hard in Scala?
4 min read • • Explanation
Unravel the complexities of Scala's powerful type system with our deep dive into contravariance: we simplify and demystify its challenging aspects
Founder | Rock The JVM
ZIO Fibers: Concurrency and Lightweight Threads
12 min read • • Guide
Explore ZIO's unique fiber model for concurrency: see how it stands out from other effect libraries in the Scala ecosystem
ZIO HTTP Explained: The REST of the Owl
22 min read • • Guide
Learn how to effortlessly set up an HTTP server with zio-http: the powerful HTTP library in the ZIO ecosystem
Principal Engineer | Carvana
ZIO Kafka: A Practical Streaming Tutorial
23 min read • • Guide
Discover how to leverage ZIO to seamlessly interact with Apache Kafka: the proven, scalable solution for reliable communication between distributed application components
ZIO Streams: A Long-Form Introduction
22 min read • • Explanation
Unlock the Power of ZIO Streams: Your Comprehensive Guide to a Key ZIO Ecosystem Abstraction
Principal Engineer | Carvana