Go Fully Functional and Take Your Legacy Code with You!
summary
Promised outcome: a mechanical four‑step migration: plan test build refactor applied to a concrete example (a qualification pipeline that reads CSVs, computes scores with coefficients, and indexes into Elasticsearch). Impure functions become effect types: wrap impure code in IO or use Option/Either for partials/errors, convert eager Future via IO, and isolate blocking onto thread pools (or use ZIO’s blocking). Regression protection uses golden master regression tests. Tooling: Scala + cats IO, Monix or ZIO, test frameworks and IDE refactor support.
AI-written summary · about
chapters (43)
- 0:00Introduction
- 0:47Who am I
- 1:20Agenda
- 2:24Functional Programming
- 3:19Function Signature
- 4:20Scala
- 5:13Java
- 6:33Reusability
- 7:12Hurdles
- 8:58Example
- 10:16Domain Overview
- 11:15Migration Method
- 12:31Tools
- 13:22Planification
- 14:37Legacy Project
- 15:16Executive Architecture
- 20:07Pipeline
- 21:50Regression Test
- 23:28Build in the Built
- 24:22Qualification
- 25:35TDD
- 26:48Modify Existing Code
- 28:29Partial Functions
- 29:15Mana
- 29:32Handling Errors
- 30:30Handling Side Effects
- 31:13Other Implementations
- 32:02Handling impure code
- 33:00Code that cannot be changed
- 33:35Interfacing problem
- 34:10Future
- 35:40Synchronous Call
- 36:27Blocking Call
- 36:57Handling Blocking Calls
- 40:33Synchronous Calls
- 41:04Using Future
- 42:01Callbacks
- 43:55Services
- 46:50Why are frameworks a problem
- 47:22Generate the future
- 48:12Go beyond
- 49:08More advanced tools
- 51:05Conclusion
related talks
01h 01mMoving IO to the edges of your app: Functional Core, Imperative Shell
32mLegacy Code: Big Rewrite or Progressive Rejuvenation?
58mFrom Zero to Live with Functional JavaScript Applications (Part 2)
45mFrom Zero to Live with Functional JavaScript Applications (Part 1)
46mWhy Care About Functional Programming
10mFunctional Programming for Everyone
37mGrowing a Joyful Codebase from Legacy Code
11mThe monster under the bed - working with legacy code
