Articles

Engineering patterns and decisions in technical prose, with code.

  1. Go intensive: concurrency, resilience, and distributed systems in 30 minutes

    A 30-minute guide to reactivate production Go knowledge for backend services, telemetry ingestion, and distributed systems.

  2. Derusting logic #02: Container With Most Water

    I tried to pick the next step by looking only at the neighbors. It worked in some cases, but the problem asked for a wider view.

  3. Derusting logic #01: Group Anagrams

    I had not stopped writing code. What changed was outsourcing parts of the reasoning. Group Anagrams was the exercise to recover the habit.

  4. Most backend performance problems start close to the data

    Slow API and the meeting already fills with solutions. I start close to the data — not to blame the database, but because that check usually gives a fast signal.

  5. Goroutines vs Event Loop: the wrong comparison between two concurrency models

    Node.js with the Event Loop and Go with goroutines do not solve the same problem the same way. The common mistake is confusing concurrency with parallelism.

  6. TypeScript Clean Architecture: Core, Adapters, and Infra

    Weak architecture blocks maintenance, testing, and change. This Clean Architecture derivation for TypeScript backends separates Core, Adapters, and Infra — with dependencies pointing inward.

  7. Design Patterns: Strategy

    If/else chains grow and turn fragile. Strategy isolates each algorithm behind a contract.

  8. Stop being hostage to dependencies. Say hello to the Adapter design pattern

    Migrating from MySQL to PostgreSQL does not require rewriting the service. The Adapter isolates the plugin behind a contract the business rule understands.