All 147 articles, sorted alphabetically
Scala 3 contextual abstraction
Deep-dive on Scala 3's redesigned implicits: given instances and using clauses, type-class composition and Mirror-based deriv…
Read article →Scala 3 metaprogramming
Deep-dive on Scala 3 metaprogramming: inline defs and compile-time branching, typed quotes and splices, macro construction, Mirror-based structural re…
Read article →Scala 3 Deprecations
What's dropped from Scala 2.
Read article →Scala 3 Enums
Sealed + case classes shorthand.
Read article →Scala 3 Extension Methods
extension def block. Cleaner than implicit class.
Read article →Scala 3 Given + Using
Modern implicit replacement.
Read article →Scala 3 Indent-Based Syntax
Braces optional. Python-like.
Read article →Scala 3 Match Types
Type-level pattern matching.
Read article →Scala 3 Migration Guide
-source:3.x compiler flags.
Read article →Scala 3 Stability + Roadmap
Where language is heading.
Read article →Scala 3 Top-Level Definitions
def, val outside object/class.
Read article →Scala 3 Transparent Inline
Compile-time inlining.
Read article →Scala Akka Actors Introduction
Actor model. Untyped legacy.
Read article →Akka Cluster architecture
Deep-dive on Akka Cluster: seed nodes, gossip convergence, phi-accrual failure detector, split brain resolver, cluster sharding, singleton, distribute…
Read article →Akka HTTP -- streaming-first HTTP on actors and streams
Deep-dive on Akka HTTP: the composable directive routing DSL, marshalling, the Akka Streams entity foundation, end-to-end backpressure, connection poo…
Read article →Akka
How Akka implements the actor model for Scala and Java, powering distributed systems.
Read article →Akka Persistence architecture
Deep-dive on Akka Persistence: EventSourcedBehavior command/event handlers, journal plugins and sequence integrity, snapshot-bounded recovery, seriali…
Read article →Akka Streams
Backpressure. Reactive Streams.
Read article →Akka Streams architecture
Deep-dive on Akka Streams: Source/Flow/Sink blueprint algebra, materializer and operator fusion, Reactive Streams demand signaling, async boundaries, …
Read article →Akka Typed Actors
Compile-time message type safety.
Read article →Akka Typed architecture
Deep-dive on Akka Typed: sealed message protocols, Behavior[T] as functional state transitions, ActorRef[T] and compile-time mailbox safety, ActorCont…
Read article →Scala Array
JVM primitive. Fast.
Read article →Scala Arrays + Buffers
ArrayBuffer for dynamic. ListBuffer.
Read article →Scala Await
Await.result. Rare in prod code.
Read article →Scala blocking Block
Signal blocking to EC.
Read article →Scala Case Classes
How case classes model immutable data, why they include equality, copy, and pattern matching for free, and how to design case class hierarchies.
Read article →Cats Effect
How Cats Effect provides the effect system that underlies many Scala functional libraries.
Read article →Cats Effect runtime architecture
Deep-dive on Cats Effect 3: the IO run loop, work-stealing pool with per-worker timers, IO.blocking isolation, cancellation and Poll, Resource lifecyc…
Read article →Scala Cats Library
Type classes for FP.
Read article →Scala Circe
How Circe provides purely functional JSON handling in Scala.
Read article →Scala Classes
class with primary constructor in signature.
Read article →Scala Closures
Functions capture outer variables.
Read article →Scala Collections
The Scala collections library: List, Vector, Map, Set, and when to use each. Immutable versus mutable trade-offs.
Read article →Scala collections performance
Deep-dive on Scala collections performance: List/Vector/Array/Map operation costs, strict vs view vs iterator transforms, intermediate-collection allo…
Read article →Scala Companion Objects
object with same name as class.
Read article →Scala Compiler Plugins
How Scala compiler plugins extend behavior at compile time.
Read article →Scala Control Flow
if/else as expression. while. for.
Read article →Coursier
Fetches artifacts. cs setup.
Read article →Scala Currying
Partial application. def add(a)(b) form.
Read article →Scala Doobie
How Doobie provides purely functional JDBC access for Scala.
Read article →doobie architecture
Deep-dive on doobie: the sql interpolator and fragment algebra, ConnectionIO composition as transaction boundaries, Transactor and Hikari pool alignme…
Read article →Scala DSL Design Patterns
Method chaining + infix + implicits.
Read article →Scala Effect Systems Compared
How ZIO and Cats Effect compare as Scala effect systems.
Read article →Scala Either
Left = error, Right = value.
Read article →Scala ExecutionContext
Where Futures run.
Read article →Scala Existential Types
Forall for type parameters. Scala 3 removed.
Read article →Scala Extension Methods
Add methods to existing types.
Read article →Scala Factory Pattern
apply on companion. Constructor hidden.
Read article →Finagle architecture — Service/Filter composition, P2C load balancing, retry budgets, and Mux
Deep-dive on Finagle RPC: the Service-as-function abstraction, filter and stack composition, name resolution and dtabs, power-of-two-choices and apert…
Read article →Scala fold + map + filter
Standard collection HOFs.
Read article →Scala For-Comprehensions
Syntactic sugar for flatMap/map/filter.
Read article →Scala Free Monads
Programs as data. Interpreter pattern.
Read article →Scala Free Monads Deep
Program = data, interpreter runs.
Read article →Scala fs2
How fs2 provides functional streaming for Scala on Cats Effect.
Read article →fs2 streaming architecture
Deep-dive on fs2: the Pull-based demand-driven core, chunked throughput, scoped resource safety, merge/parEvalMap/concurrently semantics, fs2-io and f…
Read article →Scala Functional Error Handling
Either/Try/Validated over throw.
Read article →Functions as Values
First-class. Store, pass, return.
Read article →Functor + Applicative
map + ap building blocks.
Read article →Scala Futures
How Scala Futures represent async computations, how map/flatMap chain them, and how ExecutionContext controls concurrency.
Read article →Scala Futures and ExecutionContext
Deep-dive on scala.concurrent.Future: eager memoized async values, ExecutionContext thread pools, blocking isolation, map/flatMap composition and comb…
Read article →Scala Generic Types
Type parameters. Variance annotations.
Read article →Scala groupBy + Partition
Group elements by key.
Read article →Scala Higher-Kinded Types
Types with type parameters.
Read article →Scala Higher-Order Functions
How Scala treats functions as first-class values, the common HOFs (map/filter/fold), and how they enable functional-style data pipelines.
Read article →Higher-Order Functions in Scala
Functions as first-class values.
Read article →Scala http4s
How http4s provides purely functional HTTP client + server for Scala.
Read article →http4s architecture
Deep-dive on http4s: HttpRoutes as Kleisli functions, middleware stacks as composition, entity codecs, fs2 streaming bodies with end-to-end backpressu…
Read article →Scala Immutable vs Mutable Collections
Default immutable. Explicit mutable via import.
Read article →Scala Implicits
How Scala implicits enable type classes, extension methods, and DSL construction. Powerful but easily abused.
Read article →Scala Implicits (2) vs Given/Using (3)
Type class + DI mechanism.
Read article →Scala iron
How iron provides modern refinement types for Scala 3.
Read article →Scala Iterators
Single-pass. Lazy.
Read article →Scala kittens
How kittens automatically derives Cats type classes for case classes.
Read article →Scala Lagom
How Lagom provides reactive microservices for Scala/Java.
Read article →Scala Lazy Evaluation
lazy val + LazyList + views.
Read article →Scala LazyList (was Stream)
Lazy immutable list. Infinite possible.
Read article →Scala List
Cons + Nil. Head-append optimal.
Read article →Scala Macros
Compile-time metaprogramming.
Read article →Scala Map
HashMap default. Multiple impls.
Read article →Scala Memoization Patterns
Cache results. mutable.Map or 3rd-party.
Read article →Scala Metals
How Metals provides fast, lightweight IDE features for Scala via LSP.
Read article →Scala Metaprogramming
How Scala's macros and mirrors enable compile-time metaprogramming.
Read article →Scala Methods vs Functions
def vs val = (x) =>. Distinct concepts.
Read article →Scala Mill Build Tool
Modern faster alternative to sbt.
Read article →Scala Mixins
Compose traits. Diamond linearization.
Read article →Scala Monadic Composition
flatMap + map chains.
Read article →Scala Monads
How Option, Either, Try, and Future embody the monad pattern for context-aware computation.
Read article →Scala Monads Introduction
Option, Either, List, Future all monadic.
Read article →MUnit
Fast + simple. JUnit-compatible.
Read article →Scala 3 Opaque Types
Type alias with hidden implementation.
Read article →Scala Option
Some or None. Explicit optionality.
Read article →Scala Ordering + Sorting
Ordered trait + Ordering type class.
Read article →Scala Overview
What Scala is, why it fused functional and object-oriented paradigms on the JVM, and where it fits versus Java, Kotlin, and pure functional languages.
Read article →Scala Parallel Collections
.par for parallelism.
Read article →Scala Partial Application
Apply some args now, rest later.
Read article →Scala Path-Dependent Types
Types depending on values.
Read article →Scala Pattern Matching
How pattern matching works: literals, constructors, guards, extractors, and how sealed hierarchies enable compile-time exhaustiveness checking.
Read article →Scala Phantom Types
Compile-time-only type tags.
Read article →Scala Play Framework
How Play provides async Scala web dev with Akka underneath.
Read article →Play Framework architecture
Deep-dive on Play Framework: typed routing and reverse routes, Action composition and body parsers, the default vs blocking execution-context discipli…
Read article →Scala Promise
Write-once handle for Future.
Read article →Scala 3 Quotes + Splices
Modern metaprogramming.
Read article →Scala Ranges
1 to 10, 1 until 10. Efficient sequences.
Read article →Referential Transparency
Same input → same output. Foundation of FP.
Read article →Scala refined
How refined provides refinement types (predicates + values) for Scala.
Read article →Scala Reflection
Runtime + compile-time.
Read article →Scala Sangria
How Sangria provides GraphQL server implementation for Scala.
Read article →sbt
How sbt handles Scala builds: dependencies, compilation, testing, packaging.
Read article →sbt architecture
Deep-dive on sbt internals: load-time settings graph vs per-run task DAG, scope axes and delegation, Zinc API-hash invalidation, Coursier resolution, …
Read article →Scala 3
The major changes in Scala 3: enums, given/using, extension methods, cleaner syntax.
Read article →ScalaCheck Property Testing
Generate test cases. Find edge cases.
Read article →Scala scalafix
How scalafix lints + auto-refactors Scala code.
Read article →Scala.js
How Scala.js compiles Scala to efficient JavaScript for full-stack Scala.
Read article →Scala Native
How Scala Native compiles Scala to native binaries via LLVM.
Read article →ScalaTest Framework
Popular testing library.
Read article →Scala scodec
How scodec provides type-safe binary encoding/decoding.
Read article →Scala Sealed Traits + ADTs
Algebraic Data Types via sealed.
Read article →Scala Self Types
this: T => declares dependency.
Read article →Scala Set
HashSet default. TreeSet sorted.
Read article →Scala Shapeless
How Shapeless enables generic programming with HLists + case class magic.
Read article →Scala Shapeless 3
How Shapeless 3 adapts shapeless to Scala 3.
Read article →Scala sliding + grouped
Windowed views over collection.
Read article →Scala Streams
How Scala LazyList (Stream in Scala 2) provides lazy sequence processing.
Read article →scala_string_interpolation
Read article →Scala Structural Types
Duck typing at compile time.
Read article →Scala Tagless Final
Modern effect polymorphism.
Read article →Scala Tail Recursion
@tailrec annotation. No stack overflow.
Read article →Scala Tapir
How Tapir enables describing APIs as data + deriving server + client + docs.
Read article →Tapir architecture
Deep-dive on Tapir: the Endpoint[I,E,O] description algebra, schema and codec derivation, server/client/OpenAPI interpreters from one value, oneOf err…
Read article →Scala Testing
The main Scala testing frameworks and property-based testing.
Read article →Scala Traits
Multiple inheritance safe. Diamond OK.
Read article →Scala Traverse + Sequence
Turn F[G[A]] into G[F[A]].
Read article →Scala TrieMap
Lock-free hash trie map.
Read article →Scala Try
Success or Failure. Bridges exceptions.
Read article →Scala Tuples
Fixed-size heterogeneous groups.
Read article →Scala Type Classes
Ad-hoc polymorphism via implicit.
Read article →Scala Type Inference
Omit types where obvious. Compiler infers.
Read article →Scala Type-Level Programming
Encode logic in types.
Read article →Scala Type System
The Scala type system: generic types, variance annotations, higher-kinded types, and type classes. Why it enables libraries like Cats.
Read article →Scala Type Class Patterns
How type classes enable extensible polymorphism in Scala, and the patterns that make them work.
Read article →Scala val vs var
Prefer val. Immutable references.
Read article →Scala Value Classes
AnyVal wrapper. No allocation cost.
Read article →Scala Vector
32-way trie. O(log32) access.
Read article →Scala Views
.view then transform. .to force.
Read article →Scala ZIO Fibers
Lightweight concurrency. Cancelable.
Read article →ZIO Introduction
How ZIO provides functional effect system for Scala with excellent ergonomics.
Read article →ZIO runtime architecture
Deep-dive on the ZIO runtime: effect values and the interpreter, fiber scheduling and work stealing, blocking pool isolation, typed error causes, inte…
Read article →