Matthias Noback
matthiasnoback.bsky.social
Matthias Noback
@matthiasnoback.bsky.social
https://matthiasnoback.nl

Work: Freelance programmer, trainer, writer, public speaker, consultant
Topics: object-oriented and Domain-Driven Design, architecture, refactoring, Test-Driven Development, pair/mob programming
Languages: PHP, Fortran
Next #Fortran Test framework post: adding assertion functions for comparing other internal types, but also derived types. matthiasnoback.nl/2026/02/fort...
Fortran - Testing - More assertion functions
Comparing other internal types, and derived types
matthiasnoback.nl
February 13, 2026 at 8:44 AM
Next #Fortran post: "Returning test and assertion errors".

We find more good reasons for using custom derived types in the test framework. Assertion functions no longer print their results directly to screen. matthiasnoback.nl/2026/01/fort...
Fortran - Testing - Returning test and assertion errors
Introducing new types to carry test and assertion results
matthiasnoback.nl
January 28, 2026 at 6:18 PM
New #Fortran testing post: "Showing progress and printing results" matthiasnoback.nl/2026/01/fort... We introduce a polymorphic observer, so we can switch to a different way of producing output during a test run.
Fortran - Testing - Showing progress and printing results
A polymorphic observer as progress printer
matthiasnoback.nl
January 22, 2026 at 3:24 PM
New #Fortran article: making the test framework testable, separating main logic from output, and returning results. matthiasnoback.nl/2026/01/fort...
Fortran - Testing - Towards a generic, testable test runner
Separating logic from output generation, returning results
matthiasnoback.nl
January 20, 2026 at 9:15 AM
New #Fortran blog post: "Unit tests and test suites" matthiasnoback.nl/2026/01/fort...
The next step towards a generic test framework is to let test modules announce their own tests to the test runner. We introduce the types unit_test_t and test_suite_t that carry procedure pointers.
Fortran - Testing - Unit tests and test suites
Introducing dedicated test modules and the foundation for a test framework
matthiasnoback.nl
January 16, 2026 at 9:47 AM
New blog post about unit testing #Fortran programs: "Improving temporary test programs" Part 1 introduces assertions and an error counter. The series shows what the technical ingredients for a test framework are, and that they are quite easy to implement. matthiasnoback.nl/2026/01/fort...
Fortran - Testing - Improving temporary test programs
By introducing assertions and error collection
matthiasnoback.nl
January 12, 2026 at 9:20 AM
Reposted by Matthias Noback
Sulu 3.0 is here! 🚀 Sulu 3.0 was released live at last week’s Sulu:Touch event — a major milestone and a proud moment for our team.

Read more on our blog: sulu.io/blog/sulu-3-...
Sulu 3.0 release: New content storage and performance boost
Sulu 3.0 delivers faster performance with new Doctrine ORM storage, simplified dependencies, and improved developer experience. Major upgrade guide included.
sulu.io
December 3, 2025 at 3:57 PM
With 2 model kits in my portfolio it was time to start my own website/trademark! Noback Ship Models nobackshipmodels.com
October 6, 2025 at 7:53 AM
Reposted by Matthias Noback
Alright, let's make it official…

I am super-proud to tell you that I have finally published the print version of my book: "Legacy Code: First Aid Kit" 🎉 📕 🥲
September 17, 2025 at 2:14 PM
New #Fortran post: "Errors and error handling - Part 7 - Fatal errors" matthiasnoback.nl/2025/07/fort...

Almost everywhere in our code should we allow errors to bubble up to higher abstraction levels, until we get to the point that we'd like to terminate the program. How to do that properly?
Fortran - Errors and error handling - Part 7 - Fatal errors
Stop with error code, error message, and stack trace
matthiasnoback.nl
July 21, 2025 at 7:19 AM
New #Fortran post: "Errors and error handling part 6: Guarantees" matthiasnoback.nl/2025/07/fort...

If we want guarantees that data in a DT is correct, we have to use a custom constructor. Such a constructor then needs another Either return type so it can return a validated instance or an error.
Fortran - Errors and error handling - Part 6 - Guarantees
The Evidence Pattern
matthiasnoback.nl
July 18, 2025 at 7:00 AM
New #Fortran post: Errors and error handling part 5: Error propagation matthiasnoback.nl/2025/07/fort...

We redesign the error value so lower-level errors can be "wrapped" inside higher-level errors.
Fortran - Errors and error handling - Part 5 - Error propagation
Error propagation and nesting
matthiasnoback.nl
July 17, 2025 at 6:56 AM
New #Fortran post: "Errors and error handling - Part 4 - Using an Either type" matthiasnoback.nl/2025/07/fort...

We consider a problem that involves parsing and find a solution to deal with errors: a parse function that returns an "Either" type, containing an error, or the expected result.
Fortran - Errors and error handling - Part 4 - Using an Either type
Dealing with parse errors
matthiasnoback.nl
July 16, 2025 at 6:14 AM
New #Fortran post: Preventing edge cases with types matthiasnoback.nl/2025/07/fort...

We look at an alternative solution for calculating the average of an empty list; only offer such a procedure for a non-empty list.
Fortran - Errors and error handling - Part 3 - Preventing edge cases with types
An alternative: the non-empty list type
matthiasnoback.nl
July 15, 2025 at 7:50 AM
New #Fortran post: "Errors & Error Handling Part 2 - Optional Results matthiasnoback.nl/2025/07/fort...

Instead of returning a success flag and use an intent(out) argument to return the actual function result, we implement an optional return value using an abstract derived type and two subtypes.
Fortran - Errors and error handling - Part 2
Optional results
matthiasnoback.nl
July 11, 2025 at 7:14 AM
New #Fortran post "Errors and error handling, part 1: Exploration": matthiasnoback.nl/2025/07/fort...

The first part in a series about dealing with errors: we explore some common approaches and what their downsides are.
Fortran - Errors and error handling - Part 1 - Exploration
Exploring our options
matthiasnoback.nl
July 10, 2025 at 7:18 AM
One extra #Fortran post for today: "Functional Programming Concepts - Reduce" matthiasnoback.nl/2025/06/fort...

Having discussed filter and map which transform arrays into new arrays, we still need another function: reduce, which transforms arrays into single values.
Fortran - Functional Programming Concepts - Reduce
Reducing arrays to a single value
matthiasnoback.nl
June 30, 2025 at 12:06 PM
New #Fortran post: "Functional Programming - List Type" matthiasnoback.nl/2025/06/fort...

By introducing a list type we can bind the functional-style filter and map functions to a derived type, making it possible to "chain" multiple calls.
Fortran - Functional Programming - List type
Adding filter and map behavior to a list type
matthiasnoback.nl
June 30, 2025 at 7:35 AM
New #Fortran post: "Fortran - Functional Programming Concepts - Map" matthiasnoback.nl/2025/06/fort...

After discussing filter functions, now it's time to work no a map function.
Fortran - Functional Programming Concepts - Map
Transforming arrays
matthiasnoback.nl
June 28, 2025 at 8:47 AM
New #Fortran post: "Fortran - Functional Programming Concepts - Closures" matthiasnoback.nl/2025/06/fort...

Fortran doesn't have good support for higher-order functions and closures, can we replicate them?
Fortran - Functional programming - Closures
Generic filtering
matthiasnoback.nl
June 27, 2025 at 5:55 AM
New #Fortran post: "Functional Programming Concepts - Generic filtering" matthiasnoback.nl/2025/06/fort...

Fortran doesn't support generics, which would allow us to reuse the same filter function for arrays of different types of values. In this post we'll explore a work-around for this problem.
Fortran - Functional Programming Concepts - Generic Filtering
Filtering arrays with other value types
matthiasnoback.nl
June 26, 2025 at 7:16 AM
New #Fortran post: "Fortran - Functional Programming Concepts: Filter" matthiasnoback.nl/2025/06/fort...

Having looked at Object-Oriented programming concepts in Fortran, we now dive into Functional programming concepts. We start with filtering arrays of integers.
Fortran - Functional Programming Concepts: Filter
Introducing functional programming in Fortran with filtering integers
matthiasnoback.nl
June 25, 2025 at 10:24 AM
New #Fortran post: "Enumeration, part 3" matthiasnoback.nl/2025/06/fort...

It's surprising how much there is to explore about enumeration types, but here we are with the final part: we further improve the design by making log level an abstract type, and all the concrete levels subtypes.
Fortran: Enumeration, part 3
Adding more behavior and introducing enum subtypes
matthiasnoback.nl
June 20, 2025 at 7:09 AM
New #Fortran post: "Enumeration, part 2" matthiasnoback.nl/2025/06/fort...

We increase type safety by narrowing the integer level argument to a derived type argument. A new factory type helps us separate responsibilities. Finally we compare levels using operator overloading.
Fortran: Enumeration, part 2
Type safety, a log level factory, and operator overloading
matthiasnoback.nl
June 19, 2025 at 7:38 AM
New #Fortran post: "Fortran: Enumeration, part 1" matthiasnoback.nl/2025/06/fort...

We are refactoring the integer parameters for the various log levels that we want to support. We want to accomplish type-safety and ease-of-use (pun intended).
Fortran: Enumeration, part 1
In the post about decoration we declared log levels as follows: module logging_base ! ... integer, parameter, public :: LOG_DEBUG = 0 integer, parameter, public :: LOG_INFO = 1 integer, parameter,…
matthiasnoback.nl
June 18, 2025 at 8:58 AM