CV
Home

// blog

Writing

Things I run into building production systems. Mostly backend, always practical.

  • Database
    Mar 14, 2026 8 min

    MySQL Isolation Levels and the Problems They Solve

    Dirty reads, non-repeatable reads, phantom reads — each one is a real bug waiting to happen. Here's what they are, when they occur, and which isolation level fixes each one.

    DatabaseMySQLBackend
    Read
  • React
    Mar 14, 2026 5 min

    From Redux Saga to 5 Lines: A Honest Look at Modern React State Management

    Staring at a saga with three levels of generator nesting just to handle login. Most of that complexity was self-inflicted. Here's what replaced it.

    ReactFrontendArchitecture
    Read
  • Backend
    Mar 13, 2026 6 min

    Offset Pagination Will Kill Your Database

    LIMIT and OFFSET look innocent. At scale they become one of the most expensive queries you can run. Here's why, and what to use instead.

    BackendDatabasePostgreSQL
    Read
  • Node.js
    Mar 13, 2026 9 min

    Streaming MongoDB Data to GCS as CSV — Stop Loading It All Into Memory

    A very common backend task that kills services with OOM errors. Here's the real way to export large MongoDB collections to Google Cloud Storage without blowing up your process.

    Node.jsMongoDBGoogle Cloud
    Read
  • Architecture
    Mar 13, 2026 12 min

    The Irreversible Mistakes of Financial Systems Architecture

    Some architectural decisions are expensive to fix. Others you simply can't undo. Data modeling, concurrency, event sourcing — the calls you need to get right before scale makes them permanent.

    ArchitectureMongoDBCQRS
    Read
  • Engineering
    Mar 13, 2026 7 min

    Overengineering Kills Projects

    It usually starts with good intentions. A clean architecture, a scalable design, doing things the right way. And then the project never ships.

    EngineeringArchitectureTeams
    Read
  • React
    Mar 13, 2026 6 min

    You Don't Need Context for That

    Why developers keep wrapping React Query in Context providers, and why the simpler approach — a custom hook — is faster, more testable, and easier to maintain.

    ReactTypeScriptArchitecture
    Read
  • Security
    Mar 13, 2026 5 min

    PKCE, Wallet Auth, and the Challenge-Response Pattern

    Two different auth flows, one shared idea. How PKCE protects OAuth public clients, how wallet-based sign-in works, and what they have in common.

    SecurityOAuthAuthentication
    Read
  • Backend
    Mar 13, 2026 11 min

    You Probably Don't Need WebSockets

    WebSockets are the first thing people reach for when they need real-time updates. They're also usually overkill. SSE and polling exist, they're simpler, and they're often the better call.

    BackendArchitectureNode.js
    Read
  • Testing
    Mar 13, 2026 11 min

    The Testing Pyramid Is Wrong (For Most Apps)

    Thousands of unit tests, a handful of integration tests, and a prayer. Why the classic pyramid gives you false confidence, and what to test instead.

    TestingBackendArchitecture
    Read
  • TypeScript
    Mar 13, 2026 11 min

    TypeScript Is Not Java

    A lot of TypeScript codebases are just Java with different syntax. Classes everywhere, DTOs for everything, layers of abstraction the language never asked for.

    TypeScriptArchitectureBackend
    Read

Designed & Built by Carlos Villanueva

© 2026 All rights reserved.