Peter Morlion logo

How to Use Code Coverage to Your Advantage

Code coverage is an interesting tool that has received quite a bit of bad press over the years. In fact, ever since it became easy to see the code coverage of your tests, there have been fanatic supporters and rejectors. As is so often the case, the value lies in how you use it. Many […]

New Course On Technical Debt

Technical debt has been the demise of many software projects. In some cases even companies! Every CTO or manager of an software product should be aware of what technical debt is, where in their project they have such debt, and what to do about it. In my new course, Technical Debt and Legacy Code for […]

What Does A Well-Factored Monolith Look Like?

Microservices are very popular right now, because supposedly, they allow you to develop, deploy and maintain them separately. It allows you to keep a clean architecture and avoid coupling. A contrasting opinion is that a monolith can do these as well, and remains simpler to deploy and support. But it should be a well-factored monolith. […]

Deleting an NDepend Analysis From Trend

If you’ve ever had to remove an NDepend analysis from a longer trend, you know it can’t be done from the UI. I had this situation when I accidentally modified some stuff that made an incorrect outlier in my trend charts: I wanted to remove that outlier. Doing so, require diving into the outputs of […]

Code Inventory

Companies that handle physical goods usually want to keep their inventory to a minimum. As software developers, we should do the same. Physical Inventory Physical inventory is all the physical goods a company owns. Think buildings, computers, furniture, but also items they will sell, either directly or assembled. Product parts for example. Or food items […]

The Multiteam Monolith

The monolith is an architectural pattern where the software application consists of a single executable that is deployed as a whole. It can be difficult to work with when it is being maintained by a single team. But matters worsen if it is managed by multiple teams. Here’s why. How Monoliths Grow When a company […]

Running Locally

Many legacy applications are difficult to run locally, on the developer’s machine. I always recommend teams make it possible to run their code locally. After automated tests, it’s a powerful enabler for developers to improve the code quality. Here’s why. Working Offline In the past, internet connections weren’t always reliable or, when commuting, not available […]

Finding NodeJS memory leaks

I was recently tasked with finding a NodeJS memory leak, and fixing it of course. Diving into the deep inner workings of a managed language is always difficult because we’re used to not having to deal with it. So here’s how I approached it. Run Locally I always stress the fact that teams should be […]

Technical Debt At Startups

Should startups disregard code quality so that they can test their product-market fit as quickly as possible? Or should they write high quality code from the get-go? I used to think the former, but an interesting conversation with Kurt Biesemans made me change my mind. Although there is still room for exceptions, depending on the […]

The Testing Hourglass Is Fine For Legacy Code

I’m a big proponent of automated testing, and so also unit testing. Automated testing is the number one tool in my toolbox to avoid or fix technical debt. But it can also become a force that is blocking you from fixing that technical debt. Here’s why. Two Schools There are two schools in unit testing […]