sudo README

Posts


No results for 'undefined'

Notes


No results for 'undefined'

Scala Learning Resources

June 14, 2020

Like any new technology, Scala and its ecosystem take a while to master and can be frustrating at times. Don’t get discouraged! Here are some resources to help.

  • Popular IDEs are IntelliJ IDEA with the Scala plugin and Visual Studio Code with the Scala (Metals) extension. If you’re unsure which to choose, go with IntelliJ.
  • Functional vs Imperative Programming

    The core of Functional Programming is thinking about data-flow rather than control-flow. Although, by virtue of editing plain text, you are forced to order your code in a linear sequence of statements, those statements are a thin skin over what you really care about: the shape and structure of the data-flow graph within your program.

  • Tour of Scala - A tour of bite-sized introductions to the most frequently used features of Scala intended for newcomers to the language.
  • Scala: The Good Parts - Scala allows you to accomplish tasks in different ways. This blog post explains some of the more readable, maintainable approaches.
  • Scala Best Practices - Rather than using random examples from Scala projects in the wild, these are meant as an evolving “best” way of doing things.
  • 💻 Scala Exercises - An Open Source project for learning different Scala technologies. Generally relevant are the “Scala Tutorial”, “Std Lib”, and “Cats” exercises.
  • 📖 Scala for the Impatient (2nd Edition) - An approachable book (384 pages and you can skip the chapters on XML and Parsers) for experienced Java/C++/C# developers who are new to Scala or functional programming. It introduces key Scala concepts and techniques in order to be productive quickly.

Tools/Libraries

  • sbt - Scala Build Tool, similar to Gradle for Java.
  • Scalafmt - Code formatter, similar to Prettier for JavaScript.
  • Scalafix - Refactoring and linting tool, similar to ESLint for JavaScript.
  • ScalaTest - Testing tool, similar to JUnit for Java.
  • mockito-scala - Test mocking, a Scala-friendly API over Java’s Mockito.
  • Cats - Short for “category”, provides functional programming abstractions. The homepage provides a Jump Start Guide, Type Class and Date Type documentation, and motivations behind the library.
    • 📖 Scala with Cats - Free e-book available in HTML, PDF, and ePUB formats introducing the Cats library.
  • Akka and Akka Streams - A toolkit for building highly concurrent, distributed, and resilient message-driven applications.
  • Alpakka - An Akka Streams-based library used to publish and subscribe to SQS, S3, Kafka, etc. with built-in back pressure support.
  • Slick - A reactive, functional object-relational mapper (ORM).

Rocky Warren's blog.

Principal Engineer and Architect at Vertex Software. I do other stuff too.

PhotosResumeNotes