Schema on Write vs Schema on Read vs Adjusting to a Schema using an LLM

In the world of data management, two fundamental approaches govern how data is structured, stored, and processed: **schema on write** and **schema on read**. These approaches define how data is handled and interpreted by systems, influencing performance, flexibility, and...

Read

Infrastracture as Code vs Infrastracture from Code

Recently I discovered the concept of **Infrastracture from Code** and wanted to write an article about it, since writing apart from sharing knowledge, helps me to learn myself. I am sure you are familiar with the concept of Infrastracture as Code (IaC) and you have used Terraform or Cloudformation, the goal is to express your infrastracture as code so you get all the benefits of transparency, reviewing etc that code offers. A new trend has emerge lately, the concept of Infrastracture from Code...

Read

SDLC Development Principles

Defining clear operating principles is essential for any software engineering team to function effectively. These guidelines, while not easily automated, ensure the health and stability of both the systems and the team. Here I describe some of the ways I use in my day-to-day work.

Read

Proximity

In previous articles I discussed about different levels of coupling, and it is true that most of the times when we are discussing about components/modules and coupling we are focusing on the code, but there is also another dimension on the problem...

Read

The Importance of Interactions in System Design

When we try to design or analyse systems, many times we tend to concentrate only on each individual part to inspect its attributes and functionality. The truth is though that the interactions between the individual parts of a system...

Read

More on coupling

Content coupling happens when one module interacts with another module through the most implicit interface possible, one that may not be documented by the module’s author. This means that the consuming module must have detailed knowledge of the inner workings and implementation details of the module it is using...

Read

Applying the cynefin framework in software engineering

I am constantly looking for ways to help me with decision-making, whether it involves a technical or non-technical decision. Many call these principles, while others refer to them as guidelines. I don't think there is one magic way to help you solve everything, but there models that can guide you to a certain extend, at the end of the day every situation is different, every team is different, every project is different and the organisational context in which you operate is different.

Read

Knowledge coupling

When we hear "coupling" in the software industry, we often think of it as something negative. However, some level of coupling is necessary for things to function after all. The issue lies in the extent of this coupling. Coupling can...

Read

The Typecast Pattern: Harnessing State Transitions

Whether you’re dealing with network connections, user sessions, or any state-dependent operations, ensuring that transitions are valid and safe is crucial. The complexity arises because states often dictate what actions can be performed, and performing an invalid action can lead to unpredictable behavior or even system failures...

Read

Design Patterns: Abstract Factory

In the last article I explored how to implement the Singleton pattern in Rust, I will continue with another creational design pattern, the Abstract Factory pattern

Read