Blog

Writing, talks, and technical notes.

Articles, conference talks, external publications, and practical reflections on software engineering, architecture, testing, applied AI, and team practices.

  1. Post

    Your multiverse with Git

    A practical introduction to Git through a multiverse metaphor: repositories, commits, branches, merges, remotes, and history hygiene.

    Read →
  2. Post

    What is pair programming?

    Introduction to pair programming within the Extreme Programming framework: what it is, its benefits, and how to adopt it in development teams.

    Read →
  3. External

    Maintainability in testing

    How to improve the maintainability of test code, making it more resistant to change and easier to understand over time.

    Read →
  4. Post

    Kotlin: did you know?

    A quick tour of Kotlin features including immutability, raw strings, data classes, companion objects, generics, sealed classes, contracts, and property delegation.

    Read →
  5. Post

    Concurrent state updates in React

    A short React note on concurrent state updates and how updater functions prevent inconsistent overwrites when multiple processes write at once.

    Read →
  6. Post

    Introduction to Elixir | SocraCan

    An introduction to Elixir covering its functional model, pattern matching, the pipe operator, and doctests, with a final recommendation to practice using Elixir Koans.

    Read →
  7. Post

    Type composition in TypeScript

    How to use type composition to model complex scenarios more precisely and avoid overly generic structures built from optional properties.

    Read →
  8. Post

    Testing when use react context

    In many cases, our React components are wrapped in contexts, creating strong dependencies (coupling) between them. That's why unit testing can become challenging if we don't understand how these pieces work and how to mock them.

    Read →
  9. External

    How to write bad code

    Talk presented at JS Day Canarias: an ironic analysis of the most common antipatterns in software development.

    Read →
  10. Post

    Choosing how to start your React project

    A practical reflection on how to choose the foundation of a React project by evaluating SSR, SPA tradeoffs, bundlers, learning curve, maintainability, and real product needs.

    Read →
  11. Post

    Learning to estimate

    Estimating software projects is hard. Practical ideas to improve estimation, handle uncertainty, and communicate better with stakeholders.

    Read →
  12. Post

    What is technical debt?

    A clear explanation of technical debt, how it accumulates, its consequences, and how to manage it without slowing product development down.

    Read →
  13. External

    Adaptive Architecture

    Slides on non-dogmatic architecture: how to design systems that adapt to business changes without being trapped by premature decisions.

    Read →
  14. Post

    DDD aggregates

    An introduction to the aggregate pattern in DDD: what it is, what responsibilities it defines, and how to persist it correctly when root entities and domain services are involved.

    Read →
  15. Post

    Slice tests

    Slice tests are kind of integration tests used for checking the behaviour of a given layer of the application. In this example we will see what is the intention and how to check the repository layer

    Read →
  16. Post

    Tsyringe

    tsyringe is a library developed by Microsoft that makes dependency injection in TypeScript easier. In this post we review where this concept comes from, what it is for, how to configure a project, and several usage examples.

    Read →
  17. Post

    Hexagonal Architecture on the Frontend

    English hosted translation note for the Software Crafters article about applying hexagonal architecture to frontend applications and keeping domain code isolated from infrastructure details.

    Read →
  18. Post

    Functional Operators: Array Refactoring Patterns

    The functional operators of javascript arrays group a set of operations to be performed on the array in question. The best known are: forEach, map, find, filter and reduce. In this article we will see how to move our classic loops code to this functional form

    Read →
  19. Post

    TDD in React with TypeScript

    English hosted translation note for the Software Crafters article about applying TDD in React with TypeScript, from use-case thinking to testing strategy tradeoffs.

    Read →
  20. External

    Fireproof Components

    Presentation on how to build robust, fault-resistant React components by applying defensive design principles.

    Read →
  21. External

    Architecture concepts

    Presentation on fundamental software architecture concepts: layers, responsibilities, dependencies and design principles.

    Read →
  22. External

    Let's test

    Introductory presentation on testing in TypeScript applications: motivation, types of tests and first practical steps.

    Read →
  23. External

    Test Driven Development

    Introduction to TDD: the red-green-refactor cycle, the benefits of writing tests before code, and how to adopt it in a team.

    Read →
  24. Post

    How to write more readable tests

    Techniques and patterns for writing tests that communicate their intent more clearly: expressive names, builders, and helpers that cut noise without hiding behaviour.

    Read →
  25. Post

    Why TypeScript?

    The case for adopting TypeScript in JavaScript projects: gradual typing, better DX, earlier error detection, and an ecosystem backed by a massive community.

    Read →
  26. External

    Programming is the present

    Talk on the current state of programming and software development as a profession: community, continuous learning and future perspective.

    Read →
  27. External

    Redux on a leash

    Presentation on how to control Redux complexity: patterns for keeping state predictable and code maintainable in large applications.

    Read →
  28. Post

    Creating React Native apps with Enzyme

    How to set up Enzyme for testing a React Native app, what changes compared with React on the web, and how to verify press and change events by injecting callbacks.

    Read →
  29. Post

    TDD: The good, the bad and the tested

    A practical reflection on TDD, pair programming, hexagonal architecture and katas: how to start from concrete use cases and let code evolve safely from tests.

    Read →