Hey, I'm Marco
I'm a backend engineer based in Mallorca, building distributed systems and scalable services since 2014. I enjoy designing event-driven architectures, untangling complex integrations, and getting deep into implementation details.
Go taught me most of what I know about keeping systems simple, and I still reach for it. These days most of my work happens in Java with Spring Boot and in Node.js. Moving between ecosystems turns out to be a useful vantage point, because the same problems keep coming back and everyone has a different opinion about how to solve them.
When I'm not writing code, I'm probably in the gym or enjoying the countryside.
Recent Posts
-
A Queue Moves Work. A Bus Announces Facts.
I run an SQS queue and an EventBridge bus in the same system, and they are not interchangeable. One carries work that must get done. The other carries things that already happened. Here is why I kept them separate, and what it cost me.
-
Simplicity Is Harder Than It Looks
A personal reflection on why I keep overengineering my own productivity system, and how the same temptation shows up in software engineering. Sometimes the best system is simply the one that gets out of your way.
-
Your Queue Will Deliver That Message Twice. Be Ready.
A three-layer approach to idempotent message processing in Go, using content-derived keys, conditional writes, and short-circuit logic to handle duplicate deliveries without wasting compute.
-
Not Every Error Deserves a Retry: Permanent vs. Transient Failures in Event-Driven Systems
How to distinguish permanent from transient errors in an SQS-based system, route poison messages to a dead-letter queue early, and keep the rest of your batch processing smoothly. A practical walkthrough in Go.