Week 34, year 2021

Permalink | From 23 August 2021 to 29 August 2021 | Last updated on: Tue, 25 Oct 2022 17:09:04 GMT

Week 33, year 2021

Permalink | From 16 August 2021 to 22 August 2021 | Last updated on: Wed, 27 Apr 2022 14:43:38 GMT

Week 32, year 2021

Permalink | From 09 August 2021 to 15 August 2021 | Last updated on: Thu, 12 Aug 2021 12:43:22 GMT

Week 31, year 2021

  • Evolution of search engines architecture - Algolia New Search Architecture Part 1 - What would a totally new search engine architecture look like? Who better than Julien Lemoine, Co-founder & CTO of Algolia, to describe what the future of search will look like. This is the first article in a series. Search engines, and more generally, information retrieval systems, play a central role in almost all of today’s technical stacks. Information retrieval started in the beginning of computer science. Research accelerated in the early 90s with the introduction of the Text REtrieval Conference (TREC). After more than 30 years of evolution since TREC, search engines continue to grow and evolve, leading to new challenges. [High Scalability]
  • Testing Event Sourced applications, part 1: some theory - Introduction There is a lot of content already available on how to model and implement event-sourced systems. There are also numerous libraries to help build such systems. Unfortunately there is not much content out there around testing such applications. This article discusses this subject and gives some general guidance on what to test and how to test event sourced systems. [Event Store blog]
  • NodeJS gRPC client version 2.0.0 is out! - Recently, we have been focused on making our NodeJS gRPC client even more robust and stable. To achieve this, we had to introduce a few breaking changes. Read on to learn about the enhancements and necessary migration steps. [Event Store blog]
  • Good Design is Imperfect Design Part 1: Honest Names - by Eric Evans Perfectionism is a pitfall. For those who, like me, love elegant design and see its utility, there is a slippery slope waiting when a satisfying design does not emerge in a reasonable time. It takes constant self-discipline to recognize this and accept, let go, ship and move on – or return in a later cycle, if it matters. It doesn’t always matter. For many parts of our systems, a good-enough design is good enough. And for those few strategically important parts, where an incisive model and a crisp design are actually likely to affect the outcome of the project, a great initial design doesn’t usually emerge immediately. [Articles – Domain Language]
  • How to build an optimal Docker image for your application? - Some time ago, I realised that my posts from 2011 about configuration and operation in SCRUM using TFS are still hanging on the Internet… [Event-Driven by Oskar Dudycz]
  • Domain-Driven Refactoring: Defactoring and Pushing Behavior Down - In the last post, we looked at our procedural handler and pulled behavior out that called to external services into its own domain service. This let our handler become more unit testable [Jimmy Bogard]
  • Building A NestJS Web Application With EventStoreDB - Event sourcing can seem overwhelming at first. It's a paradigm shift from the classic RDBMS style of storing and querying data. And many think that event sourcing has to involve more advanced concepts like snapshots, separate databases, etc. [Event Store blog]
  • Implementierung eines Supermarkt-Self-Checkout mit DDD – Ein Forschungsprojekt auf Basis von XOOM - Brick and Mortar 2.0 — no shoplifter, but tech hipster Supermärkte mit Self-Checkout — also Bezahlen ohne Kasse und Kassierer — gibt es schon eine Weile. Seit ein paar Jahren kann man so auch in Deutschland einkaufen. Technisch funktionieren diese Self-Checkouts so, dass man vor dem Verlassen des Supermarktes alle Waren an einer Kassierstation scannt … Implementierung eines Supermarkt-Self-Checkout mit DDD – Ein Forschungsprojekt auf Basis von XOOM Read More » The post Implementierung eines Supermarkt-Self-Checkout mit DDD – Ein Forschungsprojekt auf Basis von XOOM appeared first on Kalele. [Kalele]
  • Implementing Supermarket Self-Checkout using DDD — A Research Project based on XOOM - Brick and Mortar 2.0 — no shoplifter, but tech hipster Supermarkets with self-checkout – i.e., payment without a cashier – have been around for a while. For a few years now, it has also been possible to do your shopping this way in Germany. Technically, self-checkouts work by scanning all the goods at a checkout … Implementing Supermarket Self-Checkout using DDD — A Research Project based on XOOM Read More » The post Implementing Supermarket Self-Checkout using DDD — A Research Project based on XOOM appeared first on Kalele. [Kalele]
Permalink | From 02 August 2021 to 08 August 2021 | Last updated on: Sat, 7 May 2022 15:28:32 GMT

Week 30, year 2021

  • Feature Parity - On many occasions when my colleagues find themselves talking to IT executives they hear how the executives have a suite of aging applications built using soon to be, if not already end of life technologies. More often that not these systems are hosted in costly data centers managed by 3rd parties and with inflexible contracts. These applications are critical to the successful operation of the business, while at the same time being one of the largest sources of business and operational risk. One approach in this situation is to try to minimize the impact of replacement on the broader organization by 'simply' replacing the technology while leaving everything else 'as is'. Whilst Feature Parity often sounds like a reasonable proposition, we have learnt the hard way that people greatly underestimate the effort required, and thus misjudge the choice between this and the other alternatives. more… [Martin Fowler]
  • Specification Pattern vs Always-Valid Domain Model - There’s an interesting controversy between two DDD topics: the Specification pattern and the Always-Valid domain model. [Enterprise Craftsmanship]
  • Notes about C# records and Nullable Reference Types - In the last months, I spent quite some time playing with C# records and Nullable Reference Types. I was hoping that thanks to them, I would… [Event-Driven by Oskar Dudycz]
  • Domain-Driven Refactoring: Extracting Domain Services - In my last post, we looked at the Compose Method refactoring as a means of breaking up long methods into smaller ones, each with an equivalent level of granularity. This is the refactoring in my applications I tend [Jimmy Bogard]
  • An example: Integration Middleware Removal - To illustrate how these patterns work in practice, Ian, Rob, and James describe an example of how one of our teams used a number of Legacy Modernization Patterns to successfully replace integration middleware critical to the operation of their client's business as part of a larger legacy modernization programme. They combined patterns and refactorings to successfully manage risk to the business, and facilitate eating this particularly gristly part of the elephant. more… [Martin Fowler]
  • Bloom Filters in EventStoreDB - How many new streams can be created per second in EventStoreDB? [Event Store blog]
Permalink | From 26 July 2021 to 01 August 2021 | Last updated on: Fri, 30 Jul 2021 18:52:10 GMT

Week 29, year 2021

  • Patterns of Legacy Displacement - My colleagues do a lot of work that involves replacing legacy software systems. Three of my colleagues - Ian Cartwright, Rob Horn, and James Lewis - have started to capture their experience and advice for this is a collection of patterns. We begin with anoverview article that lays out four main categories of activity that need to be done for a successful legacy displacement. more… [Martin Fowler]
  • Extract Product Lines - To do effective legacy displacement, we need to figure out how to break down the problem into manageable pieces. Extract Product Lines does this by identifying product lines and using them as the basis for migration. more… [Martin Fowler]
  • In what language are programmers writing? - Wikipedia states that there are around 700 programming languages. Some are more popular. Some are less. But what language do programmers… [Event-Driven by Oskar Dudycz]
  • Domain-Driven Refactoring: Long Methods - In the last post, I walked through the main, immediate code smell we saw of a long method [Jimmy Bogard]
Permalink | From 19 July 2021 to 25 July 2021 | Last updated on: Tue, 14 Dec 2021 15:26:27 GMT

Week 28, year 2021

  • EventStoreDB 21.6: stability, performance, and strategic importance - June is here and, as planned, EventStore 21.6 has been shipped. It is a substantial release containing important usability, stability, performance, and fixes and features as well as being an important step towards EventStoreDB's strategic architectural vision. [Event Store blog]
  • Form a wall! And other concerns about security - There were 0.3 seconds left till the end of the NBA match. Detroit Pistons were leading by a single point against San Antonio Spurs. The… [Event-Driven by Oskar Dudycz]
  • How to get the current entity state from events? - In Event Sourcing, the application state is stored in events. When we add an event, it is placed at the end of a structure called an append-only log (read more in this post What if I told you that Relational Databases are in fact Event Stores?). Events are the source of truth. This has many advantages, such as: [Event Store blog]
  • Sponsored Post - Pinecone, Kinsta, Bridgecrew, IP2Location, StackHawk, InterviewCamp.io, Educative, Stream, Fauna, Triplebyte [High Scalability]
  • Snapshotting Strategies - Looking at resources from the Internet, you may conclude that snapshots are an essential part of the Event Sourcing system. It may be tempting to read the current state from a single record instead of multiple events. We could store it separate database in parallel to appending a business event. You cannot deny that reading a single entry is faster than reading more of them, right? [Event Store blog]
  • RabbitMQ Streams Overview - A RabbitMQ stream models an append-only log with non-destructive consuming semantics. This means that – contrary to traditional queues in RabbitMQ – consuming from a stream does not remove messages. Streams in RabbitMQ are persisted and replicated. This translates to data safety and availability (in case of the loss of a node), as well as scaling (reading the same stream from different nodes.) [RabbitMQ - Blog via Aggregater Linklog]
  • Domain-Driven Refactoring: Procedural Beginnings - As part of the red-green-refactor TDD process, the second step of making the test pass means we write the simplest (but still correct) code that can possibly work that flips our test from red to green. [Jimmy Bogard]
  • AxonIQ Academy Frequently Asked Questions - If you were to sneak-peek into AxonIQ’s internal chat, you’d quickly notice that the following comic from xkcd.com pops up once in a while in quite a few channels. [Blog]
Permalink | From 12 July 2021 to 18 July 2021 | Last updated on: Fri, 4 Nov 2022 18:36:45 GMT