Category: fp
Software Transactional Memory (STM) offers a powerful and elegant solution to managing concurrency in functional programming environments. Through STM, you can create composable and maintainable concurrent applications with ease, effectively dealing with shared mutable state. In this article, we’ll dive into the concepts of STM, its core principles, and how it can be effectively utilized to build concurrent systems with data consistency and atomic operations.
In this article, we will delve into the world of fibers and their role in functional effect systems like ZIO or Effect. By exploring fibers and their various features, we aim to equip you with the ability to handle concurrency effectively in functional programming environments. We will discuss different concurrency combinators and demonstrate how they simplify the management of concurrent and asynchronous operations.
When we’re writing programs, we usually deal with some kind of dependencies: databases, loggers, caches, telemetry… Setting up a full-blown Dependency Injection framework could be a solution to this, but Effect has some aces in its sleeves that make DI frameworks unnecessary. Let’s see how we can manage dependencies using Effect.
One of the most important aspects of programming is finding a reliable way of dealing with errors, making them visible, and making them actionable. In conventional TypeScript, we don’t have such means except, probably, @throws JSDoc annotation. Effect relieves this pain by bringing errors to the surface of type and giving you a lot of convenient instruments for handling them.
Recently, Effect has gained incredible traction in the functional programming community. In this series of articles, I give an overview of Effect and its ecosystem. In the first article of the series, we take a look at what Effect<R, E, A> is, how to create, and how to compose effectful programs.
As developers, we deal with primitive data types — string, number, boolean — every day. But what if I tell you that in reality, you shouldn’t be using them at all?
Using primitive types for data modelling is a dangerous practice that should be avoided.
Functional programming is infamously known for its cryptic math-like jargon: terms like monads, monoids, functors and isomorphisms seem to be very intimidating for inexperienced developers. But if we take a look at those concepts as programming patterns, everything becomes much clearer. In the first part of the series, I will take a closer look at the most common terms from FP jargon.
In this article I present “making illegal states unrepresentable” approach to modelling business domains in TypeScript. The article is based on the talk I gave at ZED Conference, and covers topics like opaque types, type-level programming, Tagless Final and indexed monads.
Higher-kinded data is an approach of making data types kind-polymorphic, which supercharges their usage scenarios! In this article I show how to encode HKD in TypeScript, and what benefits it brings to the table.
A little note about comments in code as a tool for education.
In the fourth post of the series “Intro to fp-ts” I explain the concept of a task — a lawful lazy alternative to a ECMAScript Promise.
In the third post of the series “Intro to fp-ts” I’ll demonstrate two widely-used functional concepts — Option and Either, and show how they substitute nullables and exceptions.
In the second post of the series “Intro to fp-ts” I’ll explain “type class” pattern, and show how to apply it for ad-hoc polymorphism.
In the first post of the series “Intro to fp-ts” I’ll take a look at the concept of higher-kinded types, and how to implement them in TypeScript using lightweight higher-kinded polymorphism.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a final compilation of the last month, July.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the third month, June.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the second month, May.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the first month, April.
In this article I would like to talk a bit about one of the most commonly used patterns in enterprise architecture — Circuit Breaker — and its implementation using purely functional approach.
In this article I’ll give a quick overview of some of the most useful functional programming concepts for front-end development.
Category: typescript
Software Transactional Memory (STM) offers a powerful and elegant solution to managing concurrency in functional programming environments. Through STM, you can create composable and maintainable concurrent applications with ease, effectively dealing with shared mutable state. In this article, we’ll dive into the concepts of STM, its core principles, and how it can be effectively utilized to build concurrent systems with data consistency and atomic operations.
In this article, we will delve into the world of fibers and their role in functional effect systems like ZIO or Effect. By exploring fibers and their various features, we aim to equip you with the ability to handle concurrency effectively in functional programming environments. We will discuss different concurrency combinators and demonstrate how they simplify the management of concurrent and asynchronous operations.
When we’re writing programs, we usually deal with some kind of dependencies: databases, loggers, caches, telemetry… Setting up a full-blown Dependency Injection framework could be a solution to this, but Effect has some aces in its sleeves that make DI frameworks unnecessary. Let’s see how we can manage dependencies using Effect.
One of the most important aspects of programming is finding a reliable way of dealing with errors, making them visible, and making them actionable. In conventional TypeScript, we don’t have such means except, probably, @throws JSDoc annotation. Effect relieves this pain by bringing errors to the surface of type and giving you a lot of convenient instruments for handling them.
Recently, Effect has gained incredible traction in the functional programming community. In this series of articles, I give an overview of Effect and its ecosystem. In the first article of the series, we take a look at what Effect<R, E, A> is, how to create, and how to compose effectful programs.
As developers, we deal with primitive data types — string, number, boolean — every day. But what if I tell you that in reality, you shouldn’t be using them at all?
Using primitive types for data modelling is a dangerous practice that should be avoided.
Functional programming is infamously known for its cryptic math-like jargon: terms like monads, monoids, functors and isomorphisms seem to be very intimidating for inexperienced developers. But if we take a look at those concepts as programming patterns, everything becomes much clearer. In the first part of the series, I will take a closer look at the most common terms from FP jargon.
In this article I present “making illegal states unrepresentable” approach to modelling business domains in TypeScript. The article is based on the talk I gave at ZED Conference, and covers topics like opaque types, type-level programming, Tagless Final and indexed monads.
In this post I show how to use TypeScript literal string template types to get a compile-time UUID validation.
Higher-kinded data is an approach of making data types kind-polymorphic, which supercharges their usage scenarios! In this article I show how to encode HKD in TypeScript, and what benefits it brings to the table.
A little note about comments in code as a tool for education.
In the fourth post of the series “Intro to fp-ts” I explain the concept of a task — a lawful lazy alternative to a ECMAScript Promise.
In the third post of the series “Intro to fp-ts” I’ll demonstrate two widely-used functional concepts — Option and Either, and show how they substitute nullables and exceptions.
In the second post of the series “Intro to fp-ts” I’ll explain “type class” pattern, and show how to apply it for ad-hoc polymorphism.
In the first post of the series “Intro to fp-ts” I’ll take a look at the concept of higher-kinded types, and how to implement them in TypeScript using lightweight higher-kinded polymorphism.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a final compilation of the last month, July.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the third month, June.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the second month, May.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the first month, April.
In this article I would like to talk a bit about one of the most commonly used patterns in enterprise architecture — Circuit Breaker — and its implementation using purely functional approach.
In this article I’ll give a quick overview of some of the most useful functional programming concepts for front-end development.
Category: typelevel
In this article I’ll give a quick overview of some of the most useful functional programming concepts for front-end development.
Category: circuit breaker
In this article I would like to talk a bit about one of the most commonly used patterns in enterprise architecture — Circuit Breaker — and its implementation using purely functional approach.
Category: architecture
In this article I would like to talk a bit about one of the most commonly used patterns in enterprise architecture — Circuit Breaker — and its implementation using purely functional approach.
Category: monadic monday
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a final compilation of the last month, July.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the third month, June.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the second month, May.
In 2019 I started an activity in Twitter called #monadicmonday – each Monday I posted a thread about some FP stuff which is useful and is easy to start using right away. This is a compilation of the first month, April.
Category: higher-kinded
In the first post of the series “Intro to fp-ts” I’ll take a look at the concept of higher-kinded types, and how to implement them in TypeScript using lightweight higher-kinded polymorphism.
Category: typeclass
In the second post of the series “Intro to fp-ts” I’ll explain “type class” pattern, and show how to apply it for ad-hoc polymorphism.
Category: nullable
In the third post of the series “Intro to fp-ts” I’ll demonstrate two widely-used functional concepts — Option and Either, and show how they substitute nullables and exceptions.
Category: exception
In the third post of the series “Intro to fp-ts” I’ll demonstrate two widely-used functional concepts — Option and Either, and show how they substitute nullables and exceptions.
Category: error handling
In the third post of the series “Intro to fp-ts” I’ll demonstrate two widely-used functional concepts — Option and Either, and show how they substitute nullables and exceptions.
Category: task
In the fourth post of the series “Intro to fp-ts” I explain the concept of a task — a lawful lazy alternative to a ECMAScript Promise.
Category: taskeither
In the fourth post of the series “Intro to fp-ts” I explain the concept of a task — a lawful lazy alternative to a ECMAScript Promise.
Category: promise
In the fourth post of the series “Intro to fp-ts” I explain the concept of a task — a lawful lazy alternative to a ECMAScript Promise.
Category: education
A little note about comments in code as a tool for education.
Category: ddd
In this article I present “making illegal states unrepresentable” approach to modelling business domains in TypeScript. The article is based on the talk I gave at ZED Conference, and covers topics like opaque types, type-level programming, Tagless Final and indexed monads.
Higher-kinded data is an approach of making data types kind-polymorphic, which supercharges their usage scenarios! In this article I show how to encode HKD in TypeScript, and what benefits it brings to the table.
Category: higher-kinded data
Higher-kinded data is an approach of making data types kind-polymorphic, which supercharges their usage scenarios! In this article I show how to encode HKD in TypeScript, and what benefits it brings to the table.
Category: hkd
Higher-kinded data is an approach of making data types kind-polymorphic, which supercharges their usage scenarios! In this article I show how to encode HKD in TypeScript, and what benefits it brings to the table.
Category: uuid
In this post I show how to use TypeScript literal string template types to get a compile-time UUID validation.
Category: type-level
In this post I show how to use TypeScript literal string template types to get a compile-time UUID validation.
Category: illegal states
In this article I present “making illegal states unrepresentable” approach to modelling business domains in TypeScript. The article is based on the talk I gave at ZED Conference, and covers topics like opaque types, type-level programming, Tagless Final and indexed monads.
Category: basics
Functional programming is infamously known for its cryptic math-like jargon: terms like monads, monoids, functors and isomorphisms seem to be very intimidating for inexperienced developers. But if we take a look at those concepts as programming patterns, everything becomes much clearer. In the first part of the series, I will take a closer look at the most common terms from FP jargon.
Category: essay
I decided that I want to write not only about programming, but also about other things that deeply interest me — like education, knowledge management, or leadership methods. In this short essay, I describe my journey in knowledge management and what system I use in my daily work.
Category: knowledge management
I decided that I want to write not only about programming, but also about other things that deeply interest me — like education, knowledge management, or leadership methods. In this short essay, I describe my journey in knowledge management and what system I use in my daily work.
Category: personal
I decided that I want to write not only about programming, but also about other things that deeply interest me — like education, knowledge management, or leadership methods. In this short essay, I describe my journey in knowledge management and what system I use in my daily work.
Category: zettelkasten
I decided that I want to write not only about programming, but also about other things that deeply interest me — like education, knowledge management, or leadership methods. In this short essay, I describe my journey in knowledge management and what system I use in my daily work.
Category: data modelling
As developers, we deal with primitive data types — string, number, boolean — every day. But what if I tell you that in reality, you shouldn’t be using them at all?
Using primitive types for data modelling is a dangerous practice that should be avoided.
Category: effect
Software Transactional Memory (STM) offers a powerful and elegant solution to managing concurrency in functional programming environments. Through STM, you can create composable and maintainable concurrent applications with ease, effectively dealing with shared mutable state. In this article, we’ll dive into the concepts of STM, its core principles, and how it can be effectively utilized to build concurrent systems with data consistency and atomic operations.
In this article, we will delve into the world of fibers and their role in functional effect systems like ZIO or Effect. By exploring fibers and their various features, we aim to equip you with the ability to handle concurrency effectively in functional programming environments. We will discuss different concurrency combinators and demonstrate how they simplify the management of concurrent and asynchronous operations.
When we’re writing programs, we usually deal with some kind of dependencies: databases, loggers, caches, telemetry… Setting up a full-blown Dependency Injection framework could be a solution to this, but Effect has some aces in its sleeves that make DI frameworks unnecessary. Let’s see how we can manage dependencies using Effect.
One of the most important aspects of programming is finding a reliable way of dealing with errors, making them visible, and making them actionable. In conventional TypeScript, we don’t have such means except, probably, @throws JSDoc annotation. Effect relieves this pain by bringing errors to the surface of type and giving you a lot of convenient instruments for handling them.
Recently, Effect has gained incredible traction in the functional programming community. In this series of articles, I give an overview of Effect and its ecosystem. In the first article of the series, we take a look at what Effect<R, E, A> is, how to create, and how to compose effectful programs.