The Scala Specialists

Know Your Scala


Books, videos, training, and mentoring... everything you need to excel.

Browse our catalogue

Succeed With Scala


Professional services tailored to your business, whatever stage you're at.

Work with us

Latest from the Blog

Slick Query Enrichment

Query enrichment (or query extensions) in Slick can provide a concise way to express domain-specific logic. This gives extra flexibility beyond Slick’s combinators, such as map and filter. This post builds up an example micro DSL, showing the benefits in clarity and reduced repetition.

Continue reading…

Introducing Essential Slick

Essential Slick is a new book we’ve been working on, which is now available for early access. That means, we’ll be making updates before we announce a final version, although all the chapters are available. This post tells you a bit more about the book and its origin.

Continue reading…

Newsletter 8: Free Monads and Free Courses


There’s just time to squeeze in April’s newsletter before the month is over. In this edition we discuss the free monad and let you know about some free events running at Scala Days Amsterdam.

Our mini-series on error handling last newsletter had a great reception. We decided to repeat the idea, this time focusing on a more advanced topic: the free monad.

The free monad is one of those functional programming tools that from the outside seems both incredibly powerful (see Facebook’s Haxl and Twitter’s Stich for compelling applications) and incredibly unapproachable (if “left adjoint to a forgetful functor” means anything to you, I suggest you don’t need a tutorial on the free monad).

What we’ve tried to do is break down the free monad to its essential elements, and show that when you remove the jargon there are just a few simple concepts involved.

Continue reading…

Monadic IO: Laziness Makes You Free

Understanding monads is a puzzle with many parts. Understanding the monad interface was easy enough for me, as I’d been programming in functional languages for a while when I first started exploring them, but for a long time I didn’t understand how they made IO operations pure. The answer is to add an extra wrinkle, usually glossed over in Haskell oriented sources, by making all IO actions lazy. It this article we’re going to explore how this works and undercover some surprising relationships to the free monad, which we have been covering in recent posts.

Continue reading…

Our Customers

Some of our happy customers: