ghostdogpr.hashnode.devDebugging session #2: Scala 3 lazy vals & serializationI covered our migration to Scala 3 extensively in my last blog post, but we deployed the migrated code to production only a week ago. Such releases are always a little stressful because you never know what kind of unexpected bug can occur, and on top...Mar 7, 2025·7 min read
ghostdogpr.hashnode.devScala 3 Migration: Report from the FieldApril 30, 2024. I decided to dedicate a week to migrate our main project at work (a multiplayer mobile game server in production for over 4 years) from Scala 2.13 to Scala 3. May 7, 2024. I gave up. The removal of several features from Scala 3 (macro...Feb 4, 2025·16 min read
ghostdogpr.hashnode.devIdiomatic dependency injection for ZIO applications in ScalaI often hear online in Scala-related discussions that ZLayer is "too complex" or "unnecessary". Those statements couldn’t be more different from my own experience: I think ZLayer is an incredible lifesaver! While it is true that it had some issues in...Nov 4, 2024·9 min read
ghostdogpr.hashnode.devThe Tri-Z Architecture: a Pattern for Layering ZIO Applications in ScalaAfter working on several different services and spending a lot of time improving the code to make it easier to use, I discovered a pattern for layering my applications that I found very useful. First, a disclaimer: this architecture is not a one-size...Aug 5, 2024·12 min read
ghostdogpr.hashnode.devGraphQL in Scala: Role-Based Access ControlToday, I'm going to answer a question asked by Łukasz Biały on Twitter: Is there a way to get field-level RBAC (Role-Based Access Control)? It turns out there is! However, Caliban's approach to authentication and authorization is quite flexible. In...Jun 3, 2024·7 min read