Hi Stephanus, thanks for your feedback and question. The purpose of a command is to update the state of the system according to something that has happened in reality. Therefore, AcquireDataPoint is a good choice. Please do not confuse real-life events with commands. Commands are used to reflect the fact that a real-life event has happened. Your system might reject this command, and then the user will receive something like “Data point could not be acquired”. For further explanations, please see my workshop at dddworkshop.dev


Diving into the most notorious open question in computer science and its far-reaching philosophical consequences.

William Blake’s Newton (1795)

From the dawn of history, Humans have been a problem-solver species. From early agriculture to space exploration, solving mathematical problems seems to be a critical factor in human survival. Since the ’70s, some computational problems that once were tedious to solve have become solvable in a split of a second, mainly due to the exponential growth in processing power. However, some unique problems remain indifferent towards technological advancement, as even for the most powerful computers, solving them takes more time then a human lifetime, even if the problem is within a reasonable scale. In fact, modern encryption relies on the…

Using Akka and the Actor Model to create a distributed power plant

Photo by NASA on Unsplash

Around the world, renewable energy use is on the rise, as those alternative energy sources could hold the key to combating climate change. However, with its unpredictable nature, renewable energy generation brings in new technological challenges. Unlike with the old-style centralized fossil fuel generation, in which supply could be turned up and down according to demand, renewable energy generation can’t be forecast precisely. This unpredictable nature of both power generation and power consumption can lead to times of high supply not aligned with times of high demand. To face this problem, Lithium-ion batteries are being used, such as this mega-battery


About Event-sourcing and how to combine it with CQRS to achieve Domain-driven design

⚠️ Following demand, you can now attend this online Hands-on workshop: DDD with CQRS and Event-sourcing.

Photo by Anthony Reungère on Unsplash

A fundamental problem with building complex enterprise software is the knowledge gap created between domain experts and developers. As developers usually do not understand the core business concepts, they tend to create their own private language in order to describe business processes, which often results in software models that do not accurately reflect the business model. This is where Domain-driven design (DDD) comes into play, as it enforces a stricter alignment with the domain model.

Domain-driven design is closely related to Event Sourcing and…


Applying Event-Sourcing, CQRS, and Domain-Driven Design with NestJS

⚠️ Following demand, you can now attend this online Hands-on workshop: DDD with CQRS and Event-sourcing.

Photo by Franck V. on Unsplash

In my latest post, I have described how Event Sourcing can be a better architectural choice then CRUD, especially when it is necessary to capture intent, purpose, or reason. I have also shown that by integrating the CQRS pattern with Event Sourcing, we can achieve a performant read model, as this pattern allows us to separate the Read Model from the Write Model, making them independently scalable.

In the following post, we will show how to apply those principles when designing the Write Model…


Using MQTT and GraphQL to achieve sustainable IoT applications

Photo by Jason Blackeye on Unsplash

Drones are rapidly growing in popularity. From rescue missions to quick deliveries at rush hour, drones are proving to be extremely effective. However, drones are limited. As they are required to operate under difficult network conditions and are limited by their power-supply and network-bandwidth, drones are difficult to monitor. From the other side of this chain, IoT applications are expected to run on mobile devices and wearables, which are similarly restricted by their bandwidth, memory capacity, processing power, and power supply.

In the following post, we show how MQTT and GraphQL, both help to solve a different side of the…

Eliran Natan

Writes about Computer Science & Software Design. https://enatan.dev/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store