hagler ~$cat learn/README.md
Understanding Effect TS, learning in simple terms
A month-long unit that teaches the ideas behind Effect for TypeScript (version 4.0 release candidate) in simple terms, without drowning you in jargon.
It runs on one story: a kitchen. JavaScript is a kitchen with one cook. Promises are order receipts. Effects are recipe cards. Services are the appliances a recipe needs. Fibers are bookmarks in half-finished recipes. Every lesson adds one thing to that picture, so you never have to hold more than one new idea at a time.
The illustrated version is the same seven lessons as one interactive page, with SVG comic panels, mechanism diagrams, and a small hands-on demo per lesson.
hagler ~/learn$ls -l lessons/
- Waiting Is NormalJavaScript has one cook. Waiting must not freeze the kitchen.kitchen: One cook, a timer, and a ticket rail
- Promises, the ReceiptA Promise is a receipt for a value that isn't ready yet.kitchen: The smoothie counter
- Effects, the Recipe CardAn Effect is a plan, not an action. Nothing happens until you run it.kitchen: Recipe card vs. the meal
- Errors You Can SeeThe card says what can go wrong, so the compiler makes you deal with it.kitchen: "Out of bananas" written on the card
- Asking for Help, Services and LayersA recipe says what it needs. The kitchen supplies it.kitchen: "Needs: blender" and the pretend blender
- Many Things at Once, FibersOne cook can keep many recipes going, and can stop one cleanly.kitchen: Bookmarks in several recipes
- Cleaning UpWhatever you borrow, you give back, even when things go wrong.kitchen: The library book
hagler ~/learn$ls extras/
- Teacher's GuidePacing, common misconceptions, and how to run the demos.
- Promise vs. Effect, on One PageOne page, Promise and Effect side by side.
- Glossary, in Kid LanguageEvery word we use, in kid language.
About the code
The snippets use the Effect 4.0 release-candidate API. Every snippet in lessons 3 through 7 was type-checked and run against effect@4.0.0-rc.118 on 2026-09-29. A release candidate can still move, so if a name doesn't compile, check the current docs before assuming you typed it wrong.
The code is deliberately tiny. The goal is the ideas: a reader who leaves knowing "an Effect is a recipe card with three lines on it" has learned the thing that matters.
hagler ~$