Home » Archives for Daniel Sagenschneider

Author Archives: Daniel Sagenschneider

Founder of OfficeFloor and an evangelist for "true" inversion of control

Monad with IoCC provides Process/Thread model

This is the final article in the series on looking at Inversion of Coupling Control (IoCC) composition.  The previous articles covered: First-Class Procedure type systemFirst-Class ModuleCode examples This article looks at providing a mathematical model to explain the composition. Just a little disclaimer that I’m not a mathematics boffin.  I’ve a degree in computer science but it did not cover ...

Read More »

Compose Cats, Reactor, ZIO, … Effects

This is the third in a series of articles looking at the type system for Inversion of Coupling Control to provide composition. The previous articles covered: First-Class Procedure type systemFirst-Class Module This article will look at taking the theory into practice.  It will use the concepts to build an application composing Effects from various Effect libraries. Note that the Effects ...

Read More »

First-Class Module Type System for Composition

This is the second in a series looking at the Inversion of Coupling Control type system for composition.  This article discusses a more general Module type system than the previous article’s First-Class Procedure Type. Note: some functional programming languages also attempt to define First-Class Modules.  The First-Class Modules defined in this article are created from inverted functions. First-Class Procedure To ...

Read More »

First-Class Procedure Type System for Composition

This is the first article in a series looking at the Inversion of Coupling Control type system for composition.  The series will demonstrate how the resulting type system allows for easy composition.  This avoids much of the complexity of Functional / Object-Oriented composition.  The resulting type system and it’s resulting composition is simple enough even for junior developers to comprehend. ...

Read More »

OfficeFloor IntelliJ Plugin

OfficeFloor is now available to develop within IntelliJ. While the plugin was originally developed for Eclipse, we have now isolated the functionality into IDE agnostic bundle.   This means with a bridging implementation, it is possible to port the OfficeFloor plugin to other IDEs. However, for now we are content with Eclipse and IntelliJ for OfficeFloor development. Though if you would ...

Read More »

Inverting Functions: Effect Thread binding for Stateless Actors

Functional programming can be perceived as “hard”. Yes, spend time with it and it gets simpler and the benefits make your code definitely better. However, when type errors can start spanning multiple lines, it does suggest the abstract concepts may be “hard” to see clearly. We really need to make it easier for junior developers to assist in functional programming ...

Read More »

What is The OO Matrix?

Morpheus: I’ve seen an agent punch holes in designs with only a single dependency. Developers have fought against them with APIs that resulted in nothing but limitations. Yet their strength and their speed are still based in a world that is built on coupling. Because of that, they will never be able to write as simple or as fast code ...

Read More »

Local Microservices: First-Class Procedures

This is the third article in a three part series on local microservices.  The first two articles looked at: Object Orientation Behaviour Coupling ProblemBreaking the Jigsaw These articles identified the method coupling of Object Orientation creates a monolithic jigsaw of different shaped objects.  Microservices are breaking these into more manageable, smaller jigsaws that appear similar in shape. This article continues ...

Read More »

Local Microservices: Breaking up the Jigsaw

This is part two in a three part series looking at local microservices running in the same process.  Part one identified the coupling problems in Object Orientation behaviour (found here).  This article will look at how microservices are helping reduce the coupling problem. Part Two: Breaking up the Jigsaw Part one identified that object behaviour coupling is similar to a ...

Read More »