My Journey in Scala, Part 3: None is Better Than Undefined

Here’s the situation: At Threat Stack we consume a torrent of security event data every day, and as many new customers come on board, the amount of data we need to ingest, transform, store, and retrieve just keeps growing. About a year ago, we implemented a caching layer to allow us to display more aggregated information to customers on our Dashboard, which was powered by ElasticSearch Aggregates.

Read more “My Journey in Scala, Part 3: None is Better Than Undefined”

Scala @ Scale, Part 2: Compose Yourself!

Function composition is an extremely useful tool for creating modular, testable programs. One of the most natural applications of functional composition that I’ve found is creating a lightweight, composable HTTP request builder, and with that objective in focus, this post will equip you with the tools you need to simplify your HTTP clients.

Read more “Scala @ Scale, Part 2: Compose Yourself!”

Useful Scala Compiler Options Part 2: Advanced Language Features

Scala offers a number of advanced language features that are disabled by default. If you try to use any of them, the compiler will generate a warning informing you of their usage. There are a number of reasons that you might want to enable features (or keep them disabled). In this post, we will explore what each language feature is and under which circumstances you might want to enable them. (For a discussion of basic Scala Compiler options that we find useful at Threat Stack, see Part 1 of this series.)

Read more “Useful Scala Compiler Options Part 2: Advanced Language Features”

SELECT This! Scala Data Access Library Review, Part 1

At Threat Stack we love databases, and as we started to expand our Scala code base, we quickly realized we wanted to standardize on a way to talk to the RDMS within our Scala projects. As we explored the realm, we came across four projects that seemed to have the most potential: ScalikeJDBC, Quill, Jooq, and Doobie. We had already been playing with ScalikeJDBC for awhile, but these other libraries offered interesting features, so we began to investigate.

In this post, we’ll take a look at some of the pros and cons of ScalikeJDBC and Quill. In a followup, we’ll discuss Jooq and Doobie.

Read more “SELECT This! Scala Data Access Library Review, Part 1”

Useful Scala Compiler Options for Better Scala Development: Part 1

At Threat Stack, we like to leverage our tools to the fullest. Since we use Scala, it only makes sense for us to always be looking into ways of getting the most out of the Scala Compiler to enhance our productivity. And, as it turns out, the Scala Compiler offers a number of features that makes our lives way better! 

Read more “Useful Scala Compiler Options for Better Scala Development: Part 1”

My Journey in Scala, Part 1: Awakenings

When I started at Threat Stack over a year ago, I came in as a Platform Engineer expecting to work on JavaScript. I had no idea that Threat Stack would get bit by the Scala bug. But our first Scala app, created by another team member, went into production a couple of months after I joined, and I soon learned that Scala was way more than a passing fad at Threat Stack.

Read more “My Journey in Scala, Part 1: Awakenings”

Scala @ Scale, Part 1: Leaving Unhandled Errors Behind

The number of organizations investing in Scala is exploding, and for good reason. Scala combines Object Oriented and Functional capabilities as well as immutability, which makes it an extremely powerful foundation for applications that need to run at massive scale.

This series on Scala aims to bridge the gap between theory and practice by focusing on something that is not easily found on the open internet: Actual examples of functional concepts being used in production, at scale. We’ll even give you code samples!

Part 1 of the series dives into something that’s near and dear to all of us: How to incorporate error handling as a primary concern with a minimal level of effort. Read more “Scala @ Scale, Part 1: Leaving Unhandled Errors Behind”