Archive for January 2021

Week 4, year 2021

  • Bliki: RefinementCodeReview - When people think of code reviews, they usually think in terms of an explicit step in a development team's workflow. These days the Pre-Integration Review, carried out on a Pull Request is the most common mechanism for a code review, to the point that many people witlessly consider that not using pull requests removes all opportunities for doing code review. Such a narrow view of code reviews doesn't just ignore a host of explicit mechanisms for review, it more importantly neglects probably the most powerful code review technique - that of perpetual refinement done by the entire team. One of the most pervasive perspectives in software is the notion that it's something we build and complete - hence the endless metaphor of building construction and architecture. Yet the key property of software is that it is soft, and can be as easily modified after it's released as it was when initially composed in the programmer's editor. That's why Erik Dörnenburg wisely argues that architecture is a poor metaphor and would be betterreplaced by town planning. [Martin Fowler]
  • Bliki: PullRequest - Pull Requests are a mechanism popularized by github, used to help facilitate merging of work, particularly in the context of open-source projects. A contributor works on their contribution in a fork (clone) of the central repository. Once their contribution is finished they create a pull request to notify the owner of the central repository that their work is ready to be merged into the mainline. Tooling supports and encourages code review of the contribution before accepting the request. Pull requests have become widely used in software development, but critics are concerned by the addition of integration friction which can prevent continuous integration. Pull requests essentially provide convenient tooling for a development workflow that existed in many open-source projects, particularly those using a distributed source-control system (such as git). [Martin Fowler]
  • Distributed Systems Pattern: Idempotent Receiver - Clients send requests to servers but might not get a response. It's impossible for clients to know if the response was lost or the server crashed before processing the request. To make sure that the request is processed, the client has to re-send the request. If the server had already processed the request and crashed after that, servers will get duplicate requests when the client retries. more… [Martin Fowler]
  • Maximizing Developer Effectiveness: Organizational Effectiveness - Tim finishes his article by looking at how highly effective organizations design their engineering organization to optimize for effectiveness and feedback loops. He illustrates what this looks like by the example of Etsy, who actively measures their ability to put valuable products into production quickly and safely, adjusting their technical investments to fix any blockers or slowness. more… [Martin Fowler]
  • What texting your Ex has to do with Event-Driven Design? - We sometimes feel melancholic, blue and a bit messy. When we enhance those feelings with “gummy berry juice” then various dubious ideas come… [Event-Driven by Oskar Dudycz]
  • Choosing a ServiceLifetime - A subtle source of errors and less-than-subtle source of frustration is understanding and using service lifetimes appropriately with .NET Core dependency injection. Service lifetimes, while complicated on the surface, can help developers that need to share state across different lifetimes of an application. Typically, a long-running application has three service [Jimmy Bogard]
  • Making Complex Topics Stick (Part 1: Content) - Ethos, Logos, and Pathos have to be built-in, not tacked on. [The Architect Elevator]
Permalink | From 25 January 2021 to 31 January 2021 | Last updated on: Tue, 25 Oct 2022 17:09:04 GMT

Week 3, year 2021

Permalink | From 18 January 2021 to 24 January 2021 | Last updated on: Tue, 8 Jun 2021 12:42:23 GMT

Week 2, year 2021

  • Always-Valid Domain Model - UPDATE 5/13/2021: the course has been published, check it now here: Validation and DDD. I’m working on a new Pluralsight course on the topic of validation and DDD, with the help of the FluentValidation library and .NET data annotations (attributes). So expect a couple of posts about validation in the near future. [Enterprise Craftsmanship]
  • Distributed Systems Pattern: Lease - Cluster nodes need exclusive access to certain resources. But nodes can crash; they can be temporarily disconnected or experiencing a process pause. Under these error scenarios, they should not keep the access to a resource indefinitely. more… [Martin Fowler]
  • The Lies that can Undermine Democracy - Like many Americans, I was transfixed and horrified by the recent assault on the Capitol. Much of this anger originates in lies perpetrated by irresponsible politicians and spread through media agencies. Lies like this can destroy democracies, and while we must have free speech we must not be free of the consequences of that speech more… [Martin Fowler]
  • How (not) to cut microservices - Today, I’m holding a keyboard in one hand and scissors in the other. What do I need these scissors for? According to the post title, I would… [Event-Driven by Oskar Dudycz]
Permalink | From 11 January 2021 to 17 January 2021 | Last updated on: Tue, 8 Jun 2021 12:42:23 GMT

Week 1, year 2021

  • Maximizing Developer Effectiveness: Feedback Loops - Tim continues his comparison of high and low effectiveness organizations by comparing their key feedback loops. To improve these, organizations need to understand the importance of micro feedback loops, which are often neglected because they are so small. more… [Martin Fowler]
  • Some more Distributed Systems Patterns - Unmesh Joshi has a few more of his Patterns of Distributed Systems ready to share with the world. Consistent Core looks at how a large cluster can keep some information strongly consistent, Lease allows unreliable nodes to access limited resources without blocking them when they fail State Watch allows clients to be notified of changes on a server. Idempotent Receiver ensures servers don't process a retried request more than once. more… [Martin Fowler]
  • Maximizing Developer Effectiveness - My colleague Tim Cochran has helped many software engineering organizations transform to respond faster to changing market needs. Often companies struggle with these transformations and a primary reason for these problems is that engineering organization has neglected to provide developers with an effective working environment. The key to to developing an effective environment is to concentrate on feedback loops. In this first installment, Tim contrasts a developer's day between high-effectiveness and low-effectiveness environments, using this contrast to show that poor organizations need to remove the common frictions that make developers feel unproductive . more… [Martin Fowler]
  • Bring me problems, not solutions! - “Bring me solutions, not problems!” I’ve heard this sentence multiple times from Business and management. You’ve heard it too, haven’t you… [Event-Driven by Oskar Dudycz]
  • A Lap Around ActivitySource and ActivityListener in .NET 5 - Part of the new DiagnosticSource API are new ways of "listening" in to activities with the addition of the ActivitySource and ActivityListener APIs. These are intended to replace the DiagnosticSource and DiagnosticListener APIs. However, the latter two types aren't deprecated, and aren't being removed from the existing usages. However, ActivitySource/ [Jimmy Bogard]
  • How to always be right (100% fair-trade vegan and snake oil-free) - Or at least be better prepared for being wrong. [The Architect Elevator]
Permalink | From 04 January 2021 to 10 January 2021 | Last updated on: Tue, 25 Oct 2022 17:09:04 GMT