blog.ploeh

Ports and fat adapters

Is it worth it having a separate use-case layer? ...

Phased breaking changes

Giving advance warning before breaking client code. ...

Appeal to aithority

No, it's not a typo. A few months ago, I was lis...

Reactive monad

IObservable is (also) a monad. This article is a...

Easier encapsulation with static types

A metaphor. While I'm still struggling with the ...

In defence of multiple WiP

Programming isn't like factory work. I was recen...

Encapsulating rod-cutting

Focusing on usage over implementation. This arti...

Pytest is fast

One major attraction of Python. A recent realization. ...

Implementing rod-cutting

From pseudocode to implementation in three languages. ...

A restaurant sandwich

An Impureim Sandwich example in C#. When learnin...

Implementation and usage mindsets

A one-dimensional take on the enduring static-versus-dynamic debat...

Geographic hulls

Seven lines of Python code. Can you tell what th...

Modelling data relationships with C# types

A C# example implementation of Ghosts of Departed Proofs. ...

Dependency inversion without inversion of control

Here, have a sandwich. For years I've been think...

Modelling data relationships with F# types

An F# example implementation of Ghosts of Departed Proofs. ...

Recawr Sandwich

A pattern variation. After writing the articles ...

This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies.