RSSAmplifier

Blog

Software Theory

Software Engineering, Architecture, and Backend Development.

carlosblanco.github.ioRSS feed ↗7 posts

Latest posts

Message Queues and Brokers Help With Temporal Decoupling

One of the more common reactions I hear when engineers first encounter a message broker in a service-to-service communication context is that it feels like overengineering. Why introduce Kafka or RabbitMQ when a plain HTTP call does the same job with less infrastructure? It’s a fair question on the surface, and the people asking it aren’t wrong that a broker adds operational complexity. What…

Why Event-Driven Architecture With a Centralized Dead-Letter Queue Makes Distributed Systems Easily Debuggable

Distributed systems earn their bad reputation for debugging mostly because of how they’re designed, not because distribution is inherently opaque. When services call each other synchronously through long chains of HTTP requests, a single failure anywhere produces symptoms everywhere — and tracing the origin means reconstructing a timeline across logs scattered across a dozen services, each with…

The DLQ Doesn’t Wait: Engineering for Trust Over Deadlines

There’s a line of thinking in software engineering that treats bugs as interruptions — things that pull you away from the “real work” of shipping features. At Nubank I found the opposite to be true. When something lands in the dead letter queue, that is the real work. The DLQ is a centralized queue shared across services where messages end up when processing fails. At any given moment it…

How Clojure Freed Me from the Ceremony

A year into working at Nubank — where the backend runs almost entirely on Clojure — I’ve had enough time to form a real opinion rather than a first impression. The thing that keeps standing out to me is how much less code I write to accomplish the same things I used to do in C# or Java. Not fewer features, not less correctness — fewer words. When I was watching Rich Hickey talk about how standard…

Finding Duplicate Addresses Using the Levenshtein Distance Metric in SQL

We’ve all been in the situation where the LIKE operator in SQL isn’t good enough for the needs of the task at hand. The LIKE operator lacks the ability to find strings that are similar but not quite the same. This is when the Levenshtein distance algorithm comes in handy.

The Stages of Skill Acquisition in Software Engineering

Throughout my career I’ve noticed many books and courses that promise to teach you everything you need to know about a programming language or software methodology in 24 hours, 7 days, or a month. This idea always struck me as curious, even back in college, and I confirmed it was largely a fallacy once I started programming professionally.

Aspect-Oriented Programming (AOP) in .NET Core and C# Using Autofac and DynamicProxy

Implementing Aspect-Oriented Programming (AOP) in .NET Core 2 was an eye-opener. I love the idea of transferring my .NET programming skills across all platforms, and here’s how I applied the techniques I’m used to on Windows directly on a Mac.