Week 3, year 2022

  • Designing Tinder - This is a guest post by Ankit Sirmorya. Ankit is working as a Machine Learning Lead/Sr. Machine Learning Engineer at Amazon and has led several machine-learning initiatives across the Amazon ecosystem. Ankit has been working on applying machine learning to solve ambiguous business problems and improve customer experience. For instance, he created a platform for experimenting with different hypotheses on Amazon product pages using reinforcement learning techniques. Currently, he is in the Alexa Shopping organization where he is developing machine-learning-based solutions to send personalized reorder hints to customers for improving their experience. [High Scalability]
  • Two Phase Commit - Continuing his exploration of important patterns to maintain consistency across a cluster, Unmesh Joshi now looks at Two Phase Commit. It's broadly the most familiar approach, but comes with lots of complexities to make it work in practice over unreliable networks. [Martin Fowler]
  • Critical Aggregator - Business Leaders often need to make decisions that are influenced by a wide range of activity throughout the whole enterprise. To support this systems often have a what Ian Cartwright, Rob Horn, and James Lewis call a Critical Aggregator: a component whose job is to visit various other systems and pull this information together. A critical aggregator is important, but often metastasizes into an Invasive Critical Aggregator [Martin Fowler]
  • Using strongly-typed identifiers with Marten - Let’s say that you have the following class definition: Now you can create instance using: So far, so good. What if we accidentally mixed… [Event-Driven by Oskar Dudycz]
  • Improving data quality with Event Sourcing - In this article we'll take a look at a few different characteristics of data quality and how Event Sourcing can help companies improve the data quality in their software. [Serialized development blog]
  • Divert the Flow - Yesterday Ian Cartwright, Rob Horn, and James Lewis described the Critical Aggregator and how it can metastasize into an invasive form. When a legacy system has such an Invasive Critical Aggregator it's often best, if a little counter-intuitive, to Divert the Flow of data by building a new critical aggregator first. Once this is done, we have far more freedom to change or relocate the various upstream data sources. [Martin Fowler]
  • The Quest for Low-Code: 9 paths, some of which actually work - No-code, low-code has become a popular quest. Architects are called in to separate fact from fiction. No French were harmed. [The Architect Elevator]
Permalink | From 17 January 2022 to 23 January 2022 | Last updated on: Tue, 25 Oct 2022 17:09:04 GMT

Week 2, year 2022

  • Service Locator is not an Anti-Pattern - Well, it is, sometimes. It depends. I often get pushback on MediatR for using service location for resolving handlers, often getting pointed at Mark Seemann's post that Service Locator is an Anti-Pattern. And for all of the examples in the post, I agree that service location in those cases should [Jimmy Bogard]
  • Designing Instagram - This is a guest post by Ankit Sirmorya. Ankit is working as a Machine Learning Lead/Sr. Machine Learning Engineer at Amazon and has led several machine-learning initiatives across the Amazon ecosystem. Ankit has been working on applying machine learning to solve ambiguous business problems and improve customer experience. For instance, he created a platform for experimenting with different hypotheses on Amazon product pages using reinforcement learning techniques. Currently, he is in the Alexa Shopping organization where he is developing machine-learning-based solutions to send personalized reorder hints to customers for improving their experience. [High Scalability]
  • Replicated Log: synchronize multiple nodes with a write-ahead log - One of the core challenges in a distributed system is keeping the state synchronized across all the nodes, especially when neither the nodes, or the connections between them, are reliable. The core approach to handle with is a replicated log: using the write-ahead log pattern over the cluster. Unmesh Joshi shows how this works using its most common implementation: the Raft protocol. more… [Martin Fowler]
  • Should a programmer's creativity be shown in code formatting? - Each of us has at least a dose of creativity. I have always liked drawing. I wanted to make effective plays in football. Today, I play the… [Event-Driven by Oskar Dudycz]
  • Legacy Mimic: a new component that looks like an old one - Ian Cartwright, Rob Horn, and James Lewis are also back with the New Year with a couple more articles from Patterns of Legacy Displacement in the funnel for the next couple of weeks. This one describes a Legacy Mimic: a part of the new system designed to make the old system think that nothing has changed. more… [Martin Fowler]
  • Respawn 5.0 Released - I pushed out a new version of Respawn today: Release notes NuGet Enjoy! [Jimmy Bogard]
Permalink | From 10 January 2022 to 16 January 2022 | Last updated on: Fri, 14 Jan 2022 23:05:49 GMT

Week 1, year 2022

  • Designing WhatsApp - This is a guest post by Ankit Sirmorya. Ankit is working as a Machine Learning Lead/Sr. Machine Learning Engineer at Amazon and has led several machine-learning initiatives across the Amazon ecosystem. Ankit has been working on applying machine learning to solve ambiguous business problems and improve customer experience. For instance, he created a platform for experimenting with different hypotheses on Amazon product pages using reinforcement learning techniques. Currently, he is in the Alexa Shopping organization where he is developing machine-learning-based solutions to send personalized reorder hints to customers for improving their experience. [High Scalability]
  • Paxos: using two consensus-building phases to handle unreliable nodes - Unmesh Joshi is ready to start the New Year with a few more of his Patterns of Distributed Systems. With this one he attempts the tricky task of explaining Paxos. This is a well-known protocol developed by Leslie Lamport, for nodes to reach a reliable consensus when both they, and the network, are prone to unexpected failure. Although it's well-known, it's also notoriously difficult to understand, indeed we had considerable difficulty getting our heads around it. We hope this description makes it a bit easier for those who follow us. more… [Martin Fowler]
  • No, it can never happen! - “No, it can never happen!”. Have you heard this sentence before? For example, a user with the same e-mail address may not register, or the… [Event-Driven by Oskar Dudycz]
  • AutoMapper 11.0.0 released - As the title says, I pushed AutoMapper 11.0.0 today: Release notes NuGet 11.0 Upgrade Guide This is somewhat of a minor release but some API changes forced a major version bump. Also, starting with this version, AutoMapper drops support for full .NET framework, as this release targets [Jimmy Bogard]
  • MediatR 10.0 Released - MediatR 10.0.0 released today [Jimmy Bogard]
  • What’s in an (event) name? - When Juliet asked Romeo “What’s in a Name?” she was trying to wish away family history—the inheritance, customs, and all the feuding baggage that came with being a Capulet. A name is an arbitrary, agreed-upon label, but it often points to a lineage of events. [Event Store blog]
  • Contoso University Vertical Slice example updated to .NET 6 - As the title states, I updated the Vertical Slice example from .NET 5 to 6, migrating away from Startup, updating packages and in general updating to C# 10: Contoso University - Vertical Slices Enjoy! [Jimmy Bogard]
Permalink | From 03 January 2022 to 09 January 2022 | Last updated on: Fri, 7 Jan 2022 23:05:53 GMT

Week 52, year 2021

  • Integrating Marten with other systems - In Event Sourcing, events are the source of truth. We save them in the event store to have a permanent history of facts about business… [Event-Driven by Oskar Dudycz]
  • 2021 Year End Review - Here’s a quick recap of blog posts I wrote in 2021. Agile Experience Reports Juggling Multiple Scrum Teams I introduce Iuri Ilatanski’s experience report about life as a multi-tasking Scrum Master. Juggling involves meeting each team’s specific needs. I was Iuri’s … Continue reading → [The Responsible Designer]
Permalink | From 27 December 2021 to 02 January 2022 | Last updated on: Mon, 18 Apr 2022 18:23:14 GMT

Week 51, year 2021

  • Models and Metaphors - One of us (Mathias) consulted for a client that acted as a broker for paying copyright holders for the use of their content. To do this, they figured out who the copyright holders of a work were. Then they tracked usage claims, calculated the amounts owed, collected the money, and made the payments. Understanding who owned what was one of the trickier parts of their business. — “It’s just a technical problem. ” — “But nobody really understands how it works!” — “Some of us understand most of it. [Mathias Verraes]
  • Models and Metaphors - When a complex technical domain isn’t easily captured in a model, look for metaphors that bring clarity. One of us (Mathias) consulted for a client that acted as a broker for paying copyright holders for the use of their content. … Continue reading → [The Responsible Designer]
  • Event Sourcing without Responsibility - This is a tale about our experience implementing event sourcing without even knowing it existed. We're a small software consultancy specializing in project work involving functional programming. It was 2015, and one of our clients was (still is, actually) a large auto-shop chain. [Event Store blog]
  • How to do snapshots in Marten? - Getting the state from events is a basic but controversial topic in Event Sourcing. I wrote on it longer in other article. To recap… [Event-Driven by Oskar Dudycz]
  • 21.10.1 Release Notes - We are pleased to announce the official release of EventStoreDB OSS & Commercial version 21.10.1 long-term support (LTS). This is a patch release that contains important fixes and changes made after the 21.10.0 LTS release. This LTS release will continue to be supported until October 2023. Read more about our versioning strategy here. [Event Store blog]
  • My favorite musical discoveries of 2021 - I listen to a lot of interesting music, so picked out my six favorite new-to-me albums this year. I hope you find something interesting to groove to in there. more… [Martin Fowler]
Permalink | From 20 December 2021 to 26 December 2021 | Last updated on: Mon, 18 Apr 2022 18:23:14 GMT

Week 50, year 2021

  • 20.10.5 Release Notes - We are pleased to announce the official release of EventStoreDB OSS & Commercial version 20.10.5 long-term support (LTS). This is a patch release that contains important fixes and changes from the 21.10.0 LTS release. This LTS release will continue to be supported until October 2022. Read more about our versioning strategy here. [Event Store blog]
  • A tech landscape and current climate sensing tool - Your own Tech Radar - Andrew's fourth supporting element for the Advice Process is using a tech radar to capture and map out your local version of the technology trends you see across your organization. more… [Martin Fowler]
  • Designing Netflix - This is a guest post by Ankit Sirmorya. Ankit is working as a Machine Learning Lead/Sr. Machine Learning Engineer at Amazon and has led several machine-learning initiatives across the Amazon ecosystem. Ankit has been working on applying machine learning to solve ambiguous business problems and improve customer experience. For instance, he created a platform for experimenting with different hypotheses on Amazon product pages using reinforcement learning techniques. Currently, he is in the Alexa Shopping organization where he is developing machine-learning-based solutions to send personalized reorder hints to customers for improving their experience. [High Scalability]
  • Treat integration as strategic to your business - Brandon finishes his article on how we should look at integration by arguing that it is a strategic element of an enterprise's infrastructure. You can buy the best products in the world but "none of it will make you competitive in a digital world if you continue to treat integration as a tactical nuisance to overcome so you take advantage of those new systems." more… [Martin Fowler]
  • CQRS is simpler than you think with .NET 6 and C# 10 - .NET and CQRS are well known for the high ceremony and enterprise feeling. You should treat that as superstition. Let me tell you why. CQRS… [Event-Driven by Oskar Dudycz]
  • How the advice process works in practice - Andrew finishes his article on how to scale software architecture by looking at how this technique works in practice, and also outlines how things can go wrong. more… [Martin Fowler]
  • How to Assert Database State? - Today, we’ll discuss a question that relates to my Unit Testing book: how to assert the state of the database? [Enterprise Craftsmanship]
  • Too Much Salt? - Practiced speakers and writers know that good examples rarely tell the whole story. Instead they shape their narratives to make the big ideas stand out. Stories are bent ever so slightly, plot details are pared down, leaving space for emphasis … Continue reading → [The Responsible Designer]
Permalink | From 13 December 2021 to 19 December 2021 | Last updated on: Mon, 18 Apr 2022 18:23:14 GMT

Week 49, year 2021

  • Use a general purpose language to manage the interface evolution - Many commercial integration tools market their ability to own the integration landscape and call out to general purpose languages as needed. While Brandon can appreciate the marketing behind such messaging — it promotes product penetration and lock-in — as architectural guidance, it is exactly backwards. Instead, we should almost always manage the interface evolution in a general purpose language for at least two reasons: so we can better manage the complexity of maintaining a clean interface, and so that we avoid the gravitational pull of our tool's mental model when making strategic integration decisions. more… [Martin Fowler]
  • Should you Abstract the Database? - This article is inspired by a tweet that I thought would be a good topic for discussion: should you abstract your database? [Enterprise Craftsmanship]
  • A time and place for conversations: The Architecture Advisory Forum - Andrew uses the Architecture Advisory Forum as a regular and recurring place and time for conversations. It's a weekly, hour-long, open invite meeting used to gather advice and share information across a broad group. more… [Martin Fowler]
  • Simple patterns for events schema versioning - Events (schema) versioning is a boogeyman for people learning Event Sourcing. They’re a spooky tale told at the campfire. There’s a truth in… [Event-Driven by Oskar Dudycz]
  • GenStage - Producer and consumer actors with back-pressure for Elixir. Project currently provides the following functionality: GenStage (behavior for implementing producer and consumer stages) and ConsumerSupervisor (a supervisor designed for consuming events from GenStage and starting a child process per event) [gen_stage via Aggregater Linklog]
  • Keep your streams short! Temporal modeling for fast reads and optimal data retention - Modeling is hard. We need to take so many things into account. This article will explain the basics of temporal modeling, a foundation for keeping your stream short living. It helps you efficiently use EventStoreDB, reducing the need for schema versioning and enabling you to evolve your event model with alignment to the business workflow. [Event Store blog]
  • Team-sourced Architectural Principles - Having architectural principles is not new, but in a world of highly-autonomous-teams they become essential because they are the means by which an aligned delivery direction is achieved without the need for control. In the latest installment, Andrew talks about what makes a good principle, and how they work with the Advice Process. more… [Martin Fowler]
  • Use commercial integration tools to simplify implementation concerns - Thus far, Brandon has has explained why general purpose languages are better for integration. In this latest installment he explains that there are cases when commercial integration tools make sense more… [Martin Fowler]
  • Sponsored Post - Wynter, Pinecone, Kinsta, Bridgecrew, IP2Location, StackHawk, InterviewCamp.io, Educative, Stream, Fauna, Triplebyte [High Scalability]
Permalink | From 06 December 2021 to 12 December 2021 | Last updated on: Wed, 29 Dec 2021 21:51:30 GMT