In this talk, I'd like to share how the Iron library and features from Scala 3 helped us build a solution which is safer, more robust, and easier to maintain.
This just crept up on us. Being a team responsible for integrations with external communication providers (smses, emails, etc), one day we woke up realising that a lot of of our work is managing changes to templates - handling other teams' requests to add or alter them, testing, making sure the timing is correct, storing in different data stores, and making sure they work correctly with different external providers. This took time and effort, and it was easy to make a mistake, causing incidents in production. We decided it's time to automate it. In this talk, I'd like to share how the Iron library and features from Scala 3 helped us build a solution which is safer, more robust, and easier to maintain.
Scala 3.6 stabilises the Named Tuples proposal in the main language. It gives us new syntax for structural types and values, and tools for programmatic manipulation of structural types without macros. Can we, and should we, push it to the limit? Of course! let's explore DSL's for config, data, and scripting, for a more dynamic feel.
In this talk, I'll walk you through coding and design practices I've developed over the years, whilst onboarding new graduates into world of Scala (be it typelevel based API, Spark based ETL, or ML pre and post-processings), and how I made the process easier for people who didn't have much Scala experience beforehand.