Real-World Functional Scala
summary
Amigo is a small Play + Scala AMi bakery that generates Ansible playbooks, writes Packer configs, spawns Packer, parses its stdout and records status in DynamoDB; the code is event‑driven, open source and has few tests. Uses Scanamo, Enumeratum and a custom Automagic macro to cut boilerplate, models domain with ADTs and value classes, applies monoids for foldMap and experiments with ReaderT/Kleisli (Cats) to defer effects — concludes Reader helps wiring but is awkward here; free monads proposed for full description/execution separation.
AI-written summary · about
chapters (43)
- 0:00Introduction
- 0:29My journey with Scala
- 2:50Amigo
- 4:50Demo
- 6:42Package Structure
- 7:22What Went Well
- 7:53ObjectOriented Design
- 9:49Data Types
- 11:13Static Types
- 13:35Errors
- 15:32Monoids
- 17:48Behavior
- 20:19Object vs Classes
- 21:36Amigo Example
- 22:19Anti Patent
- 23:21Mocking dependencies
- 23:48Classes as dependencies
- 24:31Passing functions in as parameters
- 25:19Resource management
- 26:00Currying
- 27:57Traits
- 28:29decorators
- 29:08pick the cake pattern
- 30:02minimizing boilerplate
- 30:46ScamMo
- 31:15AutoMagic
- 32:00enumeratem
- 32:33Improving the code
- 34:03Separating impure from pure
- 35:06Reader monad
- 35:49GetItem
- 36:17Combining Functions
- 38:22Reader T
- 39:32Amigo Code
- 41:09Functions as Arguments
- 41:49Hiding Wiring
- 42:39Context Objects
- 42:58Reader Objects
- 43:33Comprehension
- 44:32Cheatsheet
- 44:50Testing
- 45:32Conclusion
- 46:46Summary








