More often than not we're improvising software architecture as we go. When it is not it is usually over-engineered. What if we adopted an incremental approach to architecture?
This post shows an example about how object capabilities can be used in a CRUD application to defer authorization to individual models.
The social media landscape had changed significantly since I first started using MSN. Since then the role of status updates had changed, moving ever further away from facilitating personal interaction.
Please no LLMs interfere in my note taking process.
I hypothesize that a codebase which can be navigated by logical rules provides greater accessibility than one that must be navigated through memorization. This is one of the reasons why small teams could benefit from a layered architecture.
There are problems in the software industry that have been solved a hundred-thousand times, and will be solved a hundred-thousand more. Rather than re-inventing solutions to these common problems we should be engaging in a discussion about meta-development practices instead.
Logging statements have no place in the domain. There are multiple better alternatives you should use instead!
This post attempts to explain event sourcing through examples showing what it is and what it is not, while highlighting some of the strengths and reasons for using it.
To make a system more maintainable its temporal characteristics should mimic the way humans perceive the passing of time. Coherence should bind the past and the future through the present, whereas continuity should explain the present by the past.
My presentation on DDD Europe 2022.
A software domain has the privilege to live in total isolation from any other component in the codebase, though it must be consumed by other components. By generalizing the interaction pattern to the domain one can greatly simplify these integration points.
More often than not a software domain is required to deal with external components and service these must integrate with. Here are some considerations around these integration tasks.
Looking at code through the 'focal points' of the component might clarify a mismatch between the expected behaviour and that what is actually implemented. Organizing code accordingly to these focal points might provide a huge cognitive benefit to maintainers.
A software domain and an actor system both solve specific problems, and yet they complement each other in the creation of scalable and yet testable system. Some thoughts about how they interact.
In an effort to generalize event sourcing to the whole domain I try to adapt concepts previously developed for aggregates to other domain objects such as services, process managers, sagas and repositories.
An improvement upon the previously proposed event sourced aggregate where command provides type information about its returned domain events.
Since it would be beneficial for commands to be able to issue multiple events reflecting its behaviour I modified an earlier approach to event sourced aggregates to allow this use-case.
In order to allow an event sourced software system to evolve I believe it to be important to issue coarse commands emitting granular events. In this post I explain why.
The aggregate is a well understood concept within DDD practices. The addition of event sourcing to the mix might however complicate things, and the once pretty domain is now in shambles. In this post I'll cover the addition of ES, while keeping the awesomeness of DDD in place.
With the 'zombification of the mentally ill' I refer to a process where those dealing with mental health issues are muted due an underlying and unconscious fear one will eventually have to face their own trauma.
I'd argue that those fostering a belief to exist as totally rational beings for the sole reason they deny the existence of emotions, might in fact be the most emotional beings around. This is what I'd call 'the paradox of the rational mind'.
Recently I started playing around with Traefik on Kubernetes and wanted to request wildcard LetsEncrypt certificates.
If there is one thing I hate about web development it is creating input forms. In this post I'm about to explore some techniques to make form creation using React somewhat easier.
I discovered there was a dependency incompatibility between EF Core 5 and SqlKata. I weighted my options, and decided it would be easier to revert back to EF Core 3, than to solve this dependency compatibility issue in another way.
Recently I have been looking for more flexible ways to search through text within a SQL database, and I stumbled upon a suggestion which indicated to use the so called Levenshtein distance.
I ran a bunch of experiments to figure out how to access the filesystem from a .NET app running on Docker.
Some thoughts around drug use, personal identification with it, and its pathway to addiction
In this post I describe how my introduction into a certain family ultimately led to the beginning of the end, slowly eroding the fundamentals currently defining the social dynamics within this family.
Having my brain eat itself while trying to interpolate two data sets to one another I came up with this working, though overly complicated solution. It works, but can be implemented in a much less convoluted mess.
Many ideas surrounding suicide tend to shift the blame towards the person deciding to get rid of their life. In this post I introduce a paradox surrounding those supporting the suicidal person, also potentially being the cause of these suicidal ideations in the first place.
I describe the implementation of a cursor based GraphQL API following the Relay specification. Everything is covered, the specification, query composition, and even a real-world sample.
In an attempt to make coordinates legible without resorting to maps I have tried an approach where I describe the position relative to a know point, such as a city, mountain top, or other landmark.