Let's explore the concepts of cohesion and coupling in depth: why they are so important, and how to concretely apply them.
Let's explore the concepts of cohesion and coupling in depth: why they are so important, and how to concretely apply them.
When discussing quality attributes - who's asking?
Random opinionated blurbs
Random opinionated blurbs
Synchronous request-response communication in microservices systems can be really complicated. Fortunately, asynchronous event-based architectures can be used to avoid this, Yaroslav Tkachenko claimed in a presentation at QCon London 2018, where he described his experiences with event-driven architectures and how Actors can be used in systems built on this architecture.
Some practical examples of how the Dependency Inversion Principle (DIP) can help you simplify your code.
Reserving the right to be wrong.
I was a front-end engineer before the iPhone existed. As apps increased in use, a thought occurred to me: what if websites just… disappear? What does that mean for my job? My gut reaction was I …
If you're struggling with models, this blog post is for you. We will quickly go through the process of putting your models on a diet and finish strongly with some things to avoid when writing migrations.
We're an all-remote company that allows people to work from almost anywhere in the world. It's important for us to practice clear communication in ways that help us stay connected and work more efficiently.
In this post I'll analyze common misconceptions about TDD that lead to vast disappointments in the methodology, and discuss a number of reassessments that can solve the issues developers experience with TDD.
Recently there has been substantial discussion around the downsides of service oriented architectures and microservice architectures in particular. While only a few years ago, many people readily adopted microservice architectures due to the numerous benefits they provide such as flexibility in the form of independent deployments, clear ownership, improvements in system stability, and better separation of concerns, in recent years people have begun to decry microservices for their tendency to greatly increase complexity, sometimes making even trivial features difficult to build.
For the past year I have worked as a Senior Solutions Architect for a large multinational company in the construction sector. While in the past I functioned as a hybrid developer-architect, designi…
Part 4 of a series on how I write REST-ish web services in Haskell with a dash of robustness
A messy, real-life example E2E test case for an API I'm working on
It's easier to read because it preserves word shapes
Adopting Erlang.
AssertJ site
All cheat sheets, round-ups, quick reference cards, quick reference guides and quick reference sheets in one page.
Advent of Code. Contribute to maxdeviant/advent-of-code development by creating an account on GitHub.
Closing the gap beteween industry and academia (2/3)
Nick Gerace Hacks
Although incredibly effective, DDD is overlooked by developers because of its abstractness. Here is a set of hacks to introduce DDD during an Event Storming workshop. Ex: Alternatives to convoluted DDD names, Group activities to pass a concept through, Presentation material for tricky notions
My VCS story began with Microsoft Visual Source Safe. I was happy… I had my files versioned. I could view differences in file versions. I could …
Designing a decoupled, message based, system based on the CQRS pattern together with event sourcing require some thought. Since I've been thinking about it for a while now, I thought I'd share some thoughts so far.
Python appears to be everywhere nowadays! How did it happen, that a language that almost died in the Python 2 to 3 process is now the lingua franca a default choice when people talk about programming? There must be some secret superpower and I think I found it!
This is my review of Clean Architecture by Uncle Bob. The book is undoubtedly a classic and I feel bad for not having read it earlier. I think it might have ...
In this post, we'll look at how to apply the principles of The Clean Architecture to build a Xamarin.Forms Android app. This app will be based on a robust architecture that is loosely coupled and cleanly separates the important business or domain logic from other details and infrastructure like databases, UI frameworks, and network communications.
A semi-opinionated library which is a source generator and a code analyser. It Source generates Value Objects - SteveDunn/Vogen
We're an all-remote company that allows people to work from almost anywhere in the world. It's important for us to practice clear communication in ways that help us stay connected and work more efficiently.
Disclaimer: You do not need to understand Monads to follow this post. This is not a Monad tutorial either, but it might help you getting some intuition on what is a Monad. Some knowledge of Haskell…
Data sovereignty per microservice is one of the key points of microservices. Each microservice must be the sole owner of its database, sharing it with no other. Of course all instances of a microservice connect to the same high availability database.
The microservice architectural style is taking the world by storm. Last March, O'Reilly hosted their first Software Architecture Conference, and a huge percentage of the abstracts the program committee received touched on some aspect of microservices. Why is this architectural style suddenly all the rage?
source: Domain Driven Design (DDD) is the widely accepted and proven pattern to build applications dealing with complex domains. Not many applications manage to maintain the clear boundaries …
Today I finally took the time to put up a live demo website for Hesperides! https://hesperides.herokuapp.com Hesperides is an open source tool dedicated to configuration management: it stores applications properties and mustache templates for configurations files. It is strongly hierarchized based on few main concepts: modules, applications …
My writeup of my first DevOpsDays conference, and the awesome talks and conversations I was part of.
Care-Driven Development is a way of developing software driven by care for the outcomes. It's the art of giving a shit as a developer.
My ramblings about emacs, the internet and everything
Integrating with external services is a pain. The technical challenges—reliability, performance, caching, downtime, and so on—are well-known and ...
Graphs are a collection of nodes connected by edges. Programmers run into graphs fairly regularly because almost any collection of things with binary relationships can be viewed as a graph. As prac…
Thoughts on programming style, bugs and the UK ATC meltdown.
Posts in this series Part 0 Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7 Introduction to new concepts Before we get the ball rolling on our BankAPI project, there are some concepts we need to be acquainted with. In traditional web projects following the MVC paradigm, you have Models, Views and Controllers. The MVC paradigm from MSDN Controllers handle requests from the user, interact with Models to query or modify the database, and use the result of those interactions to populate Views that are rendered back to the user.
Posts in this series Part 0 Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7 I’ve been writing software for a long time, albeit professionally only for about 10 years now. Starting off with .NET (C#), I then had a period of fire-fighting at different projects in Perl and PHP and more C# until discovering Ruby. Ruby is great. Ruby is super expressive and friendly.
Building distributed systems is easier said than done. Putting aside the technical complexity and challenges that come with designing, developing and maintaining distributed systems, organizations need to figure out how to coordinate the efforts of their engineering teams, so that the results are delivered in finite time, at an acceptable cost, and make at least some sense for the business. This is easier said than done, and there is a reason why Conway’s Law is one of the more popular terms in the microservices world. Time and again, reality proves the outcomes of an organization’s efforts reflect its internal structure’s efficiency - or deficiency.
In this episode, we’ll take a look at redesigning an API that has been developed in a traditional layered way, moving to a more interesting onion/hexagonal/ports and adapters architecture (which is apparently very fashionable right now in .NET land).
Pretty much every web developer has built HTTP APIs. How does it usually happen? If you have good practices established in your team you probably start with a whiteboarding session. Good one-hour exercise with your colleagues produces something that we call “API spec”. It might look like this: Great job everyone! Although, we forgot a few “minor” things: Error messages and error HTTP codes Authorization and authentication Schema for the entities Versioning … >_< And the most important, does it actually satisfy consumers (like front-end apps or other systems)? Multiply that by number of years you’re going to maintain that (∞) and the rate of adding new features… Looks really depressing. Our beautifully designed “API spec” quickly becomes a pile of unmaintainable mess. Is there a better way to do it?
Domain Driven Design also known as DDD is an approach to develop software for complex needs by connecting the implementation to an evolving model. It is a way of thinking and a set of priorities, aimed at accelerating software projects that have to deal with complicated domains.
Domain Driven Design also known as DDD is an approach to develop software for complex needs by connecting the implementation to an evolving model. It is a way of thinking and a set of priorities, aimed at accelerating software projects that have to deal with complicated domains.
When Campfire - the first Once product - came out, a few of us at Ruby Zagreb pitched in to buy a copy. Prometheus had brought fire from Mount Olympus, and...
None
If you're struggling with models, this blog post is for you. We will quickly go through the process of putting your models on a diet and finish strongly with some things to avoid when writing migrations.
It seems highly logical to split teams by function, like backend and frontend. But the downside is too great to ignore. How are stream-aligned teams more valuable?
Some patterns I’ve usually encountered while working code bases written by .net developers. You can also read more on msdn.
Discover Lido, a lightweight alternative to DDD for structuring your application. Learn how to organize your codebase with domain-based packages, clear file responsibilities, and effective testing strategies.
How Aggregates are designed and the role events play in altering their state.
Learn how to build a lightweight, in-process domain events dispatcher in .NET without external dependencies. We'll explore the trade-offs between immediate consistency and coupling while implementing a strongly-typed solution from scratch.
I’ve noticed a bit of a trend within the Ruby community in recent years that worries me: every other codebase is now attempting to use interactors. That’s not inherently bad, but as we’ll discuss in this article, it has some unforeseen consequences. Luckily I haven’t seen much of this bleed into libraries but, on application code, it has been surprisingly common. Interestingly enough the first time I saw it my reaction was not negative at all: it looked like a very clean way to organize procedures (or commands) keeping things relatively interchangeable.
I’m often asked, “What is the best way to learn about building high-performance systems”? There are many perfectly valid answers to this qu...
Nick Gerace Hacks
My name is Luciano Nooijen, freelance software engineer and lifelong learner
Ian Wold is a Software Engineer, Architect, and Team Leader in Minneapolis.
A sarcastic write-up on how wonderful OOP code is. I was just venting OK? I was frustrated at work.
Programming, Coffee and Indie Hacking
When it comes to the events, the big debate is about the contents of its body. Martin Fowler has written a great post on this topic. Some devs argue that events should carry the complete load with …
When it comes to the events, the big debate is about the contents of its body. Martin Fowler has written a great post on this topic. Some devs argue that events should carry the complete load with …
Designing and building data driven dynamic web applications the one web, domain driven, RESTful, open, linked data way For the past few months I've been touting a presentation around the...
For a dev team to be fully product-oriented with sprints delivering only business value, there must be a supporting platform to manage more technical requirements. What would this platform look like?
Find out what kinds of automated tests you should implement for your application and learn by examples what these tests could look like.
This post originally appeared on the Decodable blog. All rights reserved. Having worked on Debezium—an open-source platform for Change Data Capture (CDC)—for several years, one concern I’ve heard …
When—and when not—CDC can break encapsulation, whether it matters, and strategies for avoiding these problems when it does happen.
The Lead Developer is a one day, single track conference for tech leads, senior engineers and engineering managers. I went to Lead Dev New York last week and enjoyed it. Here’s a summary of what I saw.
I went to the O’Reilly Software Architecture Conference in NYC last week. I enjoyed it a lot but I was surprised by how little it overlapped with production/reliability conferences. Here’s my conference report.