---
title: "Michael Arnaldi"
description: "Michael Arnaldi develops Effect and explains its TypeScript design in public talks."
plain: "Michael Arnaldi develops Effect and explains its TypeScript design in public talks."
group: person
terms:
  - "Michael Arnaldi"
sources:
  - url: https://youtu.be/7sJc3Z4mh1w
    title: "Effect: The Origin Story by Michael Arnaldi (Effect Days 2024) - YouTube"
    publisher: "Michael Arnaldi"
    note: "Origin-story talk; used for Effect's beginnings and design pressures."
    accessed: "2026-10-01"
  - url: https://youtu.be/gc5P36t6kD0
    title: "#81 TypeScript & Effects with Michael Arnaldi - YouTube"
    publisher: "Michael Arnaldi"
    note: "TypeScript conversation; used for the typed Effect model."
    accessed: "2026-10-01"
  - url: https://youtu.be/und9h4xiIz4
    title: "Why JavaScript is Broken: How Effect and TypeScript Fixes It (w/ Michael Arnaldi) - YouTube"
    publisher: "Michael Arnaldi"
    note: "JavaScript conversation; used for laziness and error handling."
    accessed: "2026-10-01"
  - url: https://youtu.be/BqUnsDnMnMo
    title: "Effect Meetup (Part 1 of 3) - SAN FRANCISCO 11/02/2023 - WHY EFFECT? BY MICHAEL ARNALDI - YouTube"
    publisher: "Michael Arnaldi"
    note: "Effect meetup; used for production reliability and observability."
    accessed: "2026-10-01"
---

# Michael Arnaldi

> For agents: start with the [agent guide](https://ratstack.sh/llms.txt). Every page is Markdown by default; add `Accept: text/html` for HTML.

New on /news: [Effect Office Hours 52 with Resonate HQ](/news).

Dependency injection supplies service implementations to callers.
Resource safety means cleaning up resources after use. Concurrency control manages work that runs at the same time.

Michael traces Effect to a TypeScript team's needs for dependency injection, reliable tests, resource safety, concurrency control, and retries. [Effect Days 2024, 08:40](https://youtu.be/7sJc3Z4mh1w?t=520).

He describes Effect computations through their outputs, predictable failures, and requirements: the services the work needs. [Happy Path 81, 49:15](https://youtu.be/gc5P36t6kD0?t=2955).

## Sources

1. [Effect: The Origin Story by Michael Arnaldi (Effect Days 2024) - YouTube](https://youtu.be/7sJc3Z4mh1w)
   Michael Arnaldi. Origin-story talk; used for Effect's beginnings and design pressures. Accessed 2026-10-01.

2. [#81 TypeScript & Effects with Michael Arnaldi - YouTube](https://youtu.be/gc5P36t6kD0)
   Michael Arnaldi. TypeScript conversation; used for the typed Effect model. Accessed 2026-10-01.

3. [Why JavaScript is Broken: How Effect and TypeScript Fixes It (w/ Michael Arnaldi) - YouTube](https://youtu.be/und9h4xiIz4)
   Michael Arnaldi. JavaScript conversation; used for laziness and error handling. Accessed 2026-10-01.

4. [Effect Meetup (Part 1 of 3) - SAN FRANCISCO 11/02/2023 - WHY EFFECT? BY MICHAEL ARNALDI - YouTube](https://youtu.be/BqUnsDnMnMo)
   Michael Arnaldi. Effect meetup; used for production reliability and observability. Accessed 2026-10-01.

## Lore on this page

- [Dependency injection is the reason to choose Effect](/lore/dependency-injection-is-the-reason-to-choose-effect)

## Linked from

- Agent guide → An Effect stack so pure (aspirational) Kit Langton will blush. → [Read page](https://ratstack.sh/llms.txt)

- Change log → What changed in the files served here, newest first. → [Read page](https://ratstack.sh/log)

- Context and requirements → Effect requirements make a computation's needed services visible in its type. → [Read page](https://ratstack.sh/lore/context-and-requirements)

- Full agent guide → An Effect stack so pure (aspirational) Kit Langton will blush. → [Read page](https://ratstack.sh/llms-full.txt)

- One capability, every surface → A schema-typed contract and one handler feed every interface rat-stack keeps. → [Read page](https://ratstack.sh/lore/one-capability-every-surface)

- Rat Stack lore | rat-stack → Short, source-grounded notes on the ideas and decisions behind rat-stack. → [Read page](https://ratstack.sh/lore)

- Source change history (log.md) → The generated change log as Markdown. → [Read page](https://ratstack.sh/log.md)
