Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 33 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,27 @@

This repository is intended as a helper for everyone who wants to improve their Scala knowledge, be it beginners or more advanced users. Links in the sections are provided in no specific order.

The list is still incomplete, any additional resources for existing sections or whole sections are welcome, just rise a pull request.
The list is still incomplete, any additional resources for existing sections or whole sections are welcome, just raise a pull request.

---

## General trainings and books

- Scala exercises https://www.scala-exercises.org/scala_tutorial/terms_and_types
- Scala at Light Speed https://www.youtube.com/watch?v=-8V6bMjThNo&list=PLmtsMNDRU0BxryRX4wiwrTZ661xcp6VPM
- Hands on Scala by Li Haoi https://www.handsonscala.com/chapter-1-hands-on-scala.html
- (paid) Rock The JVM https://rockthejvm.com
- (paid, free preview) Hands on Scala by Li Haoi https://www.handsonscala.com/chapter-1-hands-on-scala.html
- Scala with Cats by Underscore https://www.scalawithcats.com/dist/scala-with-cats.html
- Functional Programming in Scala by Martin Odersky https://www.coursera.org/learn/progfun1
- Strategic Scala Style: Principle of Least Power by Li Haoi https://www.lihaoyi.com/post/StrategicScalaStylePrincipleofLeastPower.html
- Lightbend Scala Language - Professional https://academy.lightbend.com/courses/course-v1:lightbend+LSL-P-Scala-Language-Professional+v1/about
- Foundations of Functional Programming in Scala https://www.youtube.com/watch?v=OdPaWmRnAc4&list=PLiYD0LWExCDkXGpYRY3WjNscDfhe4D0ND
- (paid) Inner-product training https://www.inner-product.com/services/training/

---

## Blogs, newsletters and channels

- Softwaremill
- Scala Times newsletter https://scalatimes.com/
- Blog https://softwaremill.com/blog/
Expand All @@ -40,41 +45,50 @@ The list is still incomplete, any additional resources for existing sections or
- https://blog.michalp.net/

---

## Language aspects

### Type system hierarchy

- https://docs.scala-lang.org/tour/unified-types.html
- https://www.artima.com/scalazine/articles/scalas_type_system.html

### Case classes

- https://docs.scala-lang.org/tour/case-classes.html
- https://docs.scala-lang.org/overviews/scala-book/case-classes.html

### Traits

- https://docs.scala-lang.org/tour/traits.html
- https://docs.scala-lang.org/overviews/scala-book/traits-interfaces.html

### Pattern matching

- https://docs.scala-lang.org/tour/pattern-matching.html
- https://alvinalexander.com/scala/how-to-use-pattern-matching-scala-match-case-expressions/
- https://data-flair.training/blogs/scala-pattern-matching/

### Option and Either

- https://xebia.com/blog/try-option-or-either/
- https://alvinalexander.com/scala/best-practice-eliminate-null-values-from-code-scala-idioms/
- https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-7-the-either-type/

### Collections, for comprehension

- https://docs.scala-lang.org/overviews/scala-book/collections-101.html
- https://docs.scala-lang.org/tour/for-comprehensions.html

### Implicits

- https://www.artima.com/pins1ed/implicit-conversions-and-parameters.html
- https://www.lihaoyi.com/post/ImplicitDesignPatternsinScala.html
- https://scala-fmi.github.io/scala-fmi-2019/lectures/08-implicits.html
- https://apiumhub.com/tech-blog-barcelona/scala-implicits/

### Future - asynchronous and parallel operations

- https://docs.scala-lang.org/overviews/scala-book/futures.html
- https://docs.scala-lang.org/overviews/core/futures.html
- https://danielwestheide.com/blog/the-neophytes-guide-to-scala-part-8-welcome-to-the-future/
Expand All @@ -86,76 +100,92 @@ The list is still incomplete, any additional resources for existing sections or
### Databases

#### Slick

- https://scala-slick.org/doc/3.3.1/introduction.html
- https://books.underscore.io/essential-slick/essential-slick-3.html

#### Doobie

- https://tpolecat.github.io/doobie/

#### Quill

- https://getquill.io/
- https://zio.dev/zio-quill/
- https://github.com/zio/zio-protoquill

### Working with Json

#### Circe
#### Circe

- https://circe.github.io/circe/

#### Jsoniter Scala

- https://github.com/plokhotnyuk/jsoniter-scala
- https://blog.lambdaspot.dev/the-fastest-and-safest-json-parser-and-serializer-for-scala

### IO

- https://typelevel.org/cats-effect/datatypes/io.html
- https://typelevel.org/blog/2017/05/02/io-monad-for-cats.html
- https://medium.com/walmartlabs/understanding-io-monad-in-scala-b495ca572174

### ZIO

- https://zio.dev/

### Monix

- https://monix.io/

### Messaging

#### pass4s

- https://ocadotechnology.github.io/pass4s/
- https://blog.michalp.net/posts/scala/pass4s-basics/

### Type classes

- https://tpolecat.github.io/2013/10/12/typeclass.html
- https://scalac.io/typeclasses-in-scala/
- https://www.scala-exercises.org/scala_tutorial/type_classes

### Cats

- https://underscore.io/books/scala-with-cats/
- https://typelevel.org/cats/
- https://www.scala-exercises.org/cats/semigroup

### Higher-kinded types

- https://medium.com/bigpanda-engineering/understanding-f-in-scala-4bec5996761f
- https://dzone.com/articles/scalafp-the-mystery-of-scalas-higher-kinded-types
- https://www.stephanboyer.com/post/115/higher-rank-and-higher-kinded-types

### Tagless final

- https://blog.rockthejvm.com/tagless-final/
- https://blog.softwaremill.com/final-tagless-seen-alive-79a8d884691d
- https://blog.softwaremill.com/bake-your-bread-tagless-final-style-dea9448b3dc3
- https://www.basementcrowd.com/2019/01/17/an-introduction-to-tagless-final-in-scala/
- https://scalac.io/tagless-final-pattern-for-scala-code/

### FP in general

- https://github.com/mmenestret/fp-resources
- http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html

### Streaming

#### FS2

- https://fs2.io/

### OAuth2

#### sttp-oauth2

- https://ocadotechnology.github.io/sttp-oauth2/
- https://blog.michalp.net/posts/scala/oauth2-app-p1/