Marc Nützel
  • Home
  • About
  • Skills
  • Recent Posts
  • Projects
  • Experiences
  • Posts
  • Working With Me
  • Posts
  • ECS vs EKS vs Lambda
  • Generating data with Mockneat
  • Gitlab CI Debugging
  • Kubernetes Deployment Strategies
  • Licecap for better bug tickets
  • Node.js and NPM behind an enterprise proxy
  • Spock Testing-Framework
  • Spring Boot Production-Ready Checklist
  • Modernization Playbook
  • Event Sourcing on PostgreSQL
  • The Bottleneck Is the Job
The Software Factory Has a Bottleneck, and It Is the Job
The Software Factory Has a Bottleneck, and It Is the Job

In September, a developer survey found that 42 percent of respondents now let AI write at least half of their code. A year earlier the figure was 12. Around the same time, a dataset of eight million pull requests showed that AI-generated ones get merged within a month roughly a third of the time, against about 85 percent for code people wrote themselves. They come from different studies with different samples, so they don’t measure the same thing.

  • ai
  • agents
  • code-review
  • software-engineering
  • careers
Monday, October 5, 2026 | 7 minutes Read
Event Sourcing on PostgreSQL: No Kafka Required
Event Sourcing on PostgreSQL: No Kafka Required

Every time I mention event sourcing, someone asks which message broker we run underneath it. The honest answer is none. The event store for the platform I work on, a system of record for property units and metering-device lifecycles, is a PostgreSQL table with a handful of indexes. No Kafka, no EventStoreDB, no exotic infrastructure. Just a relational database doing what it has always been good at: storing rows durably and letting you query them.

  • event-sourcing
  • postgresql
  • cqrs
  • java
  • kotlin
  • architecture
Monday, September 28, 2026 | 7 minutes Read
A Legacy Modernization Playbook That Respects the Legacy
A Legacy Modernization Playbook That Respects the Legacy

Every modernization project I’ve worked on started with someone wanting to rewrite the legacy system, and none of them ended with a rewrite. What they ended with (the ones that shipped, anyway) was a service layer in front of the legacy application that let new consumers integrate against a modern API while the legacy system kept doing what it had done for years underneath. The rewrite fantasy is seductive because the legacy code is usually genuinely bad.

  • architecture
  • legacy-modernization
  • strangler-fig
  • event-sourcing
  • domain-driven-design
Monday, September 14, 2026 | 6 minutes Read
AWS Cost Optimization for Microservices: ECS vs EKS vs Lambda
AWS Cost Optimization for Microservices: ECS vs EKS vs Lambda

The runtime question usually arrives disguised as a cost question: “our AWS bill is too high, should we move to serverless?” Almost always the honest answer is that the runtime is not the biggest line on the invoice. But the runtime decision does determine which levers you get to pull later, so it is worth making deliberately. This is the decision framework I use for Java services, and the levers that have moved real bills.

  • aws
  • java
  • microservices
  • cost-optimization
  • ecs
  • eks
  • lambda
Monday, August 17, 2026 | 6 minutes Read
Kubernetes Deployments for Java Microservices: Rolling, Blue/Green, and Canary
Kubernetes Deployments for Java Microservices: Rolling, Blue/Green, and Canary

Not every change carries the same risk. A copy fix and a rewrite of the pricing logic do not need the same rollout mechanics, and treating them the same means you either move too slowly or find out about a regression from your users. This is how I pick between rolling updates, blue/green and canary for Java services, and the JVM-specific details that make all three behave differently than the tutorials suggest.

  • kubernetes
  • java
  • microservices
  • devops
  • argo-rollouts
  • deployments
Monday, August 17, 2026 | 6 minutes Read
Spring Boot Production-Ready Checklist (2026)
Spring Boot Production-Ready Checklist (2026)

Shipping a Spring Boot service is easy. Keeping it fast, secure and operable at three in the morning is the hard part. This is the checklist I walk through before a rollout, condensed from services I have taken to production on Kubernetes over the last few years, currently on Spring Boot 4 and Java 25. It is deliberately not a list of everything you could do. It is the set of things whose absence has cost me, or a team I worked with, an incident.

  • spring-boot
  • java
  • kotlin
  • microservices
  • kubernetes
  • production
Monday, August 17, 2026 | 7 minutes Read
Generating data with Mockneat
Generating data with Mockneat

At some point every developer reaches the point where they need larger amounts of data. One open-source library I like to use is Mockneat. The Mockneat library offers an easy-to-read API to generate JSON, XML, CSV, SQL and whole POJOs. The nice thing about it is that you can generate valid data with little effort. Just a foretaste of what Mockneat can generate without much effort: If something is still missing, I can fall back on a regular expression:

  • java
  • testing
  • test-data
Friday, January 3, 2020 | 1 minute Read
Spock Testing-Framework
Spock Testing-Framework

First of all, Spock and JUnit are both great test frameworks, and JUnit is usually one of the standard tools I reach for in a project. In my last project a colleague suggested Spock, and we decided to try it out in one of our microservices and roll it out everywhere if we liked it, which we finally did. You can find all examples here on GitHub, of course. We have looked at the following criteria:

  • java
  • testing
  • spock
  • junit
  • groovy
Sunday, October 20, 2019 | 3 minutes Read
Licecap for better bug tickets
Licecap for better bug tickets

How to record screen videos with LICEcap and create better bug tickets. LICEcap is a tool for recording screen captures, which are then converted into animated GIFs and can easily be posted to a ticket tool such as Jira. LICEcap is very simple because it has only two buttons. One to start the recording and one to stop it. A colleague showed me a similar tool in a sprint review today, and I will use LICEcap for bug tickets from now on, because a video is often much more meaningful than text on its own.

  • tooling
  • jira
  • productivity
Friday, September 20, 2019 | 1 minute Read
Node.js and NPM behind an enterprise proxy
Node.js and NPM behind an enterprise proxy

For those who, like me, sometimes have to access the internet via a proxy, using Node’s package manager, npm, can be a real struggle. At first I thought that the proxy can be configured as usual in the Linux world via the environment variables HTTP_PROXY and HTTPS_PROXY. Unfortunately I thought wrong… This is how NPM needs to be configured: npm config set proxy http://proxy.de:8080 npm config set https-proxy http://proxy.de:8080

    Wednesday, October 25, 2017 | 1 minute Read
    Gitlab CI Debugging
    Gitlab CI Debugging

    I would like to show you how to debug a CI process locally using GitLab CI. I often see a barrage of failed GitLab CI jobs when new projects are set up, even though it is very easy to test the CI process locally before pushing it to the repository. First of all, this requires Docker to be installed, which you can find here. You also need a Git project and the corresponding .

    • gitlab
    • ci-cd
    • docker
    Tuesday, August 29, 2017 | 2 minutes Read
    Navigation
    • About
    • Skills
    • Recent Posts
    • Projects
    • Experiences
    • Working With Me
    • Leistungen (DE)
    • Impressum
    • Datenschutz
    Contact me:
    • me@marc-nuetzel.de