In the long run

Software design decisions should be time-aware. A common criticism of modern capitalism is that maximising shareholder value leads to various detrimental outcomes, both societal, but possibly also for the maximising organisation itself. One major problem is when company leaders … | Continue reading


@blog.ploeh.dk | 1 year ago

The IO monad

The IO container forms a monad. An article for object-oriented programmers. This article is an instalment in an article series about monads. A previous article described the IO functor. As is the case with many (but not all) functors, this one also forms a monad. SelectMany # … | Continue reading


@blog.ploeh.dk | 1 year ago

Adding NuGet packages when offline

A fairly trivial technical detective story. I was recently in an air plane, writing code, when I realised that I needed to add a couple of NuGet packages to my code base. I was on one of those less-travelled flights in Europe, on board an Embraer E190, and as is usually the cas … | Continue reading


@blog.ploeh.dk | 1 year ago

Functors as invariant functors

A most likely useless set of invariant functors that nonetheless exist. This article is part of a series of articles about invariant functors. An invariant functor is a functor that is neither covariant nor contravariant. See the series introduction for more details. It turns … | Continue reading


@blog.ploeh.dk | 1 year ago

Encapsulation in Functional Programming

Continue reading


@blog.ploeh.dk | 2 years ago

Some Thoughts on Naming Tests

Continue reading


@blog.ploeh.dk | 2 years ago

The Lazy Monad

Continue reading


@blog.ploeh.dk | 2 years ago

At the boundaries, applications aren't functional

Continue reading


@blog.ploeh.dk | 2 years ago

At the Boundaries, Applications Are Not Object-Oriented

Continue reading


@blog.ploeh.dk | 2 years ago

Monads

Continue reading


@blog.ploeh.dk | 2 years ago

Contravariant Dependency Injection

Continue reading


@blog.ploeh.dk | 2 years ago

Tips for better Pull Requests (2015)

Continue reading


@blog.ploeh.dk | 3 years ago

Translating F# discriminated unions to C# Visitor pattern

Continue reading


@blog.ploeh.dk | 3 years ago

Am I stuck in a local maximum?

Continue reading


@blog.ploeh.dk | 3 years ago

Property-based testing is not the same as partition testing

Continue reading


@blog.ploeh.dk | 3 years ago

Referential transparency fits in your head

Continue reading


@blog.ploeh.dk | 3 years ago

Structural Equality for Better Tests

Continue reading


@blog.ploeh.dk | 3 years ago

The Dispassionate Developer

Continue reading


@blog.ploeh.dk | 3 years ago

Pendulum Swings

Continue reading


@blog.ploeh.dk | 3 years ago

Dependency Rejection

Continue reading


@blog.ploeh.dk | 3 years ago

How to Design a DI-Friendly Framework

Continue reading


@blog.ploeh.dk | 4 years ago

Fit URLs

Continue reading


@blog.ploeh.dk | 4 years ago

Fortunately, I don't squash my commits

Continue reading


@blog.ploeh.dk | 4 years ago

We need young programmers; We need old programmers

Continue reading


@blog.ploeh.dk | 4 years ago

Where is the Science (behind software)?

Continue reading


@blog.ploeh.dk | 4 years ago

Curb Code Rot with Thresholds

Continue reading


@blog.ploeh.dk | 4 years ago

Visitor as a Sum Type (2018)

Continue reading


@blog.ploeh.dk | 4 years ago

Discerning and Maintaining Purity

Continue reading


@blog.ploeh.dk | 4 years ago

On Doing Katas

Continue reading


@blog.ploeh.dk | 4 years ago

Semigroup Resonance FizzBuzz

Continue reading


@blog.ploeh.dk | 4 years ago

Zone of Ceremony

Continue reading


@blog.ploeh.dk | 4 years ago

The 80/24 Rule

Continue reading


@blog.ploeh.dk | 5 years ago

Payment Types Catamorphism

Continue reading


@blog.ploeh.dk | 5 years ago

Yes Silver Bullet

Continue reading


@blog.ploeh.dk | 5 years ago

Full Binary Tree Catamorphism

Continue reading


@blog.ploeh.dk | 5 years ago

From Design Patterns to Category Theory

Continue reading


@blog.ploeh.dk | 5 years ago

A pure command-line wizard

Continue reading


@blog.ploeh.dk | 5 years ago

From dependency injection to dependency rejection

Continue reading


@blog.ploeh.dk | 5 years ago

The Programmer as Decision Maker

Continue reading


@blog.ploeh.dk | 5 years ago

Either bifunctor

Continue reading


@blog.ploeh.dk | 5 years ago

What to test and not to test by Mark Seemann

Continue reading


@blog.ploeh.dk | 6 years ago

The Rules of Attraction: Language

Continue reading


@blog.ploeh.dk | 6 years ago

Typing is not a programming bottleneck

Continue reading


@blog.ploeh.dk | 6 years ago