Mar 1 · 8 min read · When a function throws, the error channel disappears from the type system. The caller gets unknown in a catch block. There's no equivalent to Java's throws clause. No way for the compiler to say: Thi
Join discussion
Dec 8, 2025 · 4 min read · In this post, we'll explore one of the most powerful principles in type-driven design: using the type system to "Make illegal states unrepresentable". When we encode our business rules directly into our types, the compiler becomes our first line of d...
Join discussion
Nov 18, 2025 · 6 min read · At some point in your TypeScript journey, you've probably written code like this: email: string zipCode: string stateCode: string These fields are all defined as simple strings. But are they really just strings? Can you accidentally swap an email ad...
Join discussion
Nov 13, 2025 · 5 min read · When we write code, we often think about types as just a way to avoid errors or make our IDE or TypeScript happy. But types can do much more than that. They can help us think about our problems, express our business rules, model our domain, and make ...
Join discussion
Sep 15, 2025 · 7 min read · I really like this explanation of when to use a monad from Wikipedia: A monad can be used where unrestricted access to a value is inappropriate for reasons specific to the scenario. — https://en.wikipedia.org/wiki/Monad_(functional_programming) Thi...
Join discussionSep 15, 2025 · 5 min read · This post is strongly inspired by Kit Langdon’s YouTube Video: The Simple Secret Behind Effect’s PowerI highly recommend checking it out, and have embedded it at the end of the article. When you first encounter the Effect type, it can feel a little m...
Join discussionSep 13, 2025 · 11 min read · 1. Introduction One of the core ideas in functional programming is the ability to sequence computations in a predictable and composable way. Instead of scattering if/else checks or deeply nested callbacks through your code, you can build transformati...
Join discussion
Sep 12, 2025 · 7 min read · You may have come across the term monad when exploring the Effect library. Though it is also very likely you haven’t, as the term is no where to be found in the Effect documentation. And you really don’t need to know anything about monads to use Effe...
Join discussion
Jun 7, 2025 · 9 min read · If you're building apps with Effect, you've probably come across the @effect/vitest package. It's a nifty utility that integrates the Effect runtime into Vitest, making it a lot easier to test code that relies on effects, layers and other core constr...
Join discussion