Model kit: Cross-section
Model kit: Wijdschip/Smalschip
With 2 model kits in my portfolio it was time to start my own website/trademark! Noback Ship Models nobackshipmodels.com
06.10.2025 07:53 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0@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
Model kit: Cross-section
Model kit: Wijdschip/Smalschip
With 2 model kits in my portfolio it was time to start my own website/trademark! Noback Ship Models nobackshipmodels.com
06.10.2025 07:53 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0A proud Nicolas holding a physical copy of his book. The book is 200 pages long. Its cover is mostly red and titled "Legacy Code: First Aid Kit" with some bandage, and a subtitle: "14 techniques to quickly and safely rescue a codebase"
The book is open at page 85. The chapter is titled "Decouple Core from Infrastructure". We can see some explanations along code snippets that have syntax coloring and a font size large enough to be comfortable to read.
The book is opened at page 35. The current chapter is titled "The Mikado Method & The Parking". On this page we can see there is an image to illustrate the concept being explained. It's readable enough to be comfortable. We can also see a footnote that links to Philippe Bourgau's blog because he was a relevant source for this concept.
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" ๐ ๐ ๐ฅฒ
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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).
New #Fortran post: "Module Design" matthiasnoback.nl/2025/06/fort...
We splitt an existing module into smaller modules and put a faรงade module in front of the smaller ones, so users only have to deal with a simple programming interface. Finally we fix compilation cascade with a submodule.
New #Fortran post: Service Composition, part 2: Decoration matthiasnoback.nl/2025/06/fort...
In this post we explore another way of composing abstractions, which is called decoration. We prefix existing log messages with a timestamp and implement optional delegation based on a configured log level.
New #Fortran post "Fortran: Service Composition, part 1: Aggregation" matthiasnoback.nl/2025/06/fort...
We are ready to build more features into the logging library, using different styles of composition. First we look at aggregation.
New #Fortran post: "Abstract Types and Deferred Procedures" matthiasnoback.nl/2025/06/fort...
We define an abstract type with deferred procedures (in OO language: an interface) for the file logger. Introducing an abstract factory allows clients to decouple and shows us how polymorphism works.
New #Fortran post: "Modeling Services as Derived Types" matthiasnoback.nl/2025/06/fort...
Derived types (DTs) can also be used for "service objects". We look at a safe refactoring from module state and subroutines to a DT with a data component and a type-bound procedure.
New #Fortran article: "Private Data Components and Custom Constructors" matthiasnoback.nl/2025/06/fort...
We make the data inside the derived type private (encapsulation), offer alternative ways for creating new instances (factory functions), and expose these alternatives as an abstract function.
New #Fortran post: "Type-bound Procedures" matthiasnoback.nl/2025/06/fort... These are the equivalent of class methods, but can surprisingly still be used as regular functions.
03.06.2025 08:39 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0New #Fortran post: "Derived Types" matthiasnoback.nl/2025/06/fort... These are similar to structs or classes in other languages.
02.06.2025 07:06 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0New #Fortran post: "Functions and Subroutines" matthiasnoback.nl/2025/05/fort...
31.05.2025 15:07 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0New #Fortran post: "Types and variables" matthiasnoback.nl/2025/05/fort...
29.05.2025 14:05 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Next #Fortran post: "Programs and modules" matthiasnoback.nl/2025/05/fort... It looks like this is starting to be a Fortran course for people with experience writing in other programming languages...
26.05.2025 11:34 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Second #Fortran post: "Running a simple Fortran program" matthiasnoback.nl/2025/05/runn... Using very modern tooling :)
23.05.2025 14:04 โ ๐ 4 ๐ 1 ๐ฌ 0 ๐ 0