~/talk

Async injection

Talkat NDC Porto 2019 · 2019-02-26..03-01· [dotnet]
slides:none on file

Shows how to stop async leaking into the domain by treating C# async as a monad and injecting behavior into the Task<T> monad instead of changing domain signatures. Uses concrete C# tools: Task<T>, Lazy<T>, LINQ select/selectMany, a custom Maybe<T> and controller/repository examples. Refactors a restaurant reservation flow: move ReadReservations/Create to the boundary, keep MaitreD logic synchronous, return Maybe/Task wrappers, and compose with Select/Match. Result is deterministic domain logic, async where needed, and no leaked async in interfaces.

AI-written summary · about

  1. 0:00Intro
  2. 0:24Outline
  3. 2:49Domain Model
  4. 13:16Zen Buddhism
  5. 14:19The XY problem
  6. 16:07Monads
  7. 17:57Structures
  8. 21:38Functors
  9. 22:14Lazy computation
  10. 27:07Collections
  11. 28:57Tasks
  12. 31:17Semi containers
  13. 31:47Novel of T
  14. 38:01Composable helper functions
  15. 39:16Example application
  16. 47:47impure operations
  17. 50:13leaky abstraction
  18. 50:57post method
  19. 53:19code changes
  20. 55:11reservation
  21. 56:08match
  22. 56:21compiler warning
  23. 56:48post method change
  24. 57:12get better
  25. 57:30pure function
  26. 58:59removing IMHOD
  27. 59:09wrapping up
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.