Event Sourced systems implemented in tandem with Command Query Responsibility Segregation can handle very high volume of events and still deliver great experience for the users.
Because the Write Stack (command handling) is clearly separated from the Read Stack (query handling) we can prioritise which read models get updated first and which can be updated a bit later in case of a spike in traffic. Read More
In a typical CQRS/ES system events delivered to projections have At-least-once delivery guarantee and because of that it is usually necessary to implement deduplication in order to achieve idempotency.
Although some of the message queue / streaming platforms claim that they can deliver exactly one semantics the answer to the deduplication problem problem is nuanced and we can’t get away without solving it. Read More
Couple of months ago, just before the DDD Europe conference a question "Why there is no DDD community in London" struck my mind and didn't let me sleep (literally). If you think about it - it doesn't really make sense - especially that we have a good number of DDD Practitioners (or even book authors) in the city, DDD eXchange is the longest running conference and Skills Matter regularly organises DDD related trainings. Read More
Swift is around for some time now and introduced interesting constructions that are not widely used in other languages. One of these construction is Read More
if let statement that unwraps optionals. Let's consider following example…
TL;DR: use Facade Design Pattern to simplify usage of a complex subsystems and reduce number of dependencies your code has
During recent Design Patterns training I've attended at Inviqa (delivered by @_md) we had quite emotional discussion about differences between Facade and Adapter patterns (which are intuitively different but it was hard to understand why). This discussion led me to this blog post and I'd like to summarise our conclusions. Read More
During PhpSpec & PhpStorm webinar recorded together with JetBrains I've mentioned couple of times how Live Templates can speed up your development.
Personally on daily basis I'm using templates I've created for PhpSpec and shared after the webinar but since then I've improved those and would like to share it with you guys. Read More
Previous blog post about Value Objects generated quite a lot of questions about validation in context of VO:
should be the VO responsible for validating its state?
how we should handle this validation?
how to interact with users?
And in this post I will try to answer these questions and show some code samples. Read More
TL;DR: adding @mixin annotation to your specifications you will give you SUS auto-completion. Read More
Dealing with resource-consuming tasks in PHP can affect performance or even make you lose money because of poor user experience. Fortunately there are strategies for dealing with such problems and one of these is queueing.
In this session we will focus on what RabbitMQ is, how it works, how we can use it with PHP and integrate it with Symfony2 applications. After this talk you will have an idea of where you can apply queues in your system, and then make them fly and scale! Read More
Value Object is an object that represents a concept from your problem Domain. It is important in DDD that Value Objects support and enrich Ubiquitous Language of your Domain. They are not just primitives that represent some values - they are domain citizens that model behaviour of your application. Read More
Long time ago – while learning PHP – I found the following piece of code:
echo intval((0.1+0.7)*10); // int(7)
and then I forgot about it. And while I can understand that the above code returns the number 7 instead of 8, the knowledge and memory of this is critically important while performing any arithmetic calculations. Read More