Skip to main content
Back to home

Blog

The Technical Log — Articles about software development

8 min

It Depends on What Doesn't Change: Practical Object Oriented Design (III)

Second article in the POODR series by Sandi Metz. We explore how to manage dependencies between objects: injection, isolation, the argument order trap, and why the direction of dependencies is the most important design decision.

ArquitecturaPractical Object Oriented DesignClean Code

12 min

DevSweep to .NET 10: The Domain Foundations

First article in the DevSweep migration series from Bash to .NET 10 with AOT. We design the domain foundations: a custom Result type, validated value objects, and immutable entities.

.NETOpen SourceClean Code

10 min

Intelligent Auditing with Microsoft.Extensions.AI and Google Gemini in .NET 10

We continue exploring new .NET 10 features making use of generative AI.

IA.NETClean Code

10 min

DevSweep: When 256GB Is No Longer Enough

The story of how a MacBook M1 with limited storage led me to create an open source tool to safely recover gigabytes of space lost in development caches.

Open SourceBashDeveloper Tools

12 min

Honest and Robust Endpoints in .NET 10 with Minimal APIs

Exploring how .NET 10 and Minimal APIs facilitate the implementation of clean architectures following DDD principles, combining power with simplicity and expressive code.

Clean Code.NETDDD

6 min

Design is Not Art, It's Survival: Practical Object Oriented Design (I-II)

Key conclusions from the first two chapters of 'Practical Object-Oriented Design in Ruby' by Sandi Metz, applied to C#.

ArquitecturaPractical Object Oriented DesignClean Code

3 min

Vibe Coding vs. Clean Code

How I redesigned my portfolio with AI (v0 and Next.js) without letting technical debt eat me alive.

Vibe CodingNext.jsClean Code

5 min

Understanding the Differences Between DAO, Repository and Active Record

In the world of software development, efficient data management is fundamental. Design patterns such as Data Access Object (DAO), Repository and Active Record play vital roles in addressing persistence and data access.

ArchitectureSoftware DesignSoftware Patterns

8 min

Asynchrony: A Journey from Futures to Promises

In modern software development, asynchrony is an essential pillar, especially in web applications where we depend on responses from APIs or external services.

JavaJavaScriptAsynchronous

6 min

Testing in Rust

Discover how to perform TDD testing in Rust, including unit tests and the use of mocks, with practical examples.

TestingTDDRust

12 min

First Years of Experience: The Junior Developer's Challenge

Discover the reality of the junior developer market, practical tips to get your first job and how the AdoptaUnJunior initiative is helping new developers find opportunities.

JuniorOpiniónOportunidades

8 min

Navigating Smart Pointers in Rust

Explore in depth smart pointers in Rust, how they efficiently manage memory and resources, and their relationship with ownership and lifetimes in Rust. Learn about Box, Rc, Arc, RefCell, Cell, and Cow through practical examples.

RustOwnershipBorrowing

8 min

Ownership in Rust

In Rust, to guarantee memory safety and avoid errors like null pointers, double memory releases or race conditions, there is the concept of ownership. This system works at compile time and allows Rust to not need a garbage collector.

RustOwnershipBorrowing

10 min

The Mars Rover Saga - Applying the State Pattern

This article has been co-written with my colleague Aitor Reviriego, and will be the first in a saga sharing how we developed the Mars Rover kata, explaining step by step the patterns or strategies used.

Clean CodeTestingJava

5 min

Giving My First Talk at Codemotion

Discover my experience giving my first talk at Codemotion Madrid. Useful tips for new speakers, preparation of presentations and how to overcome nerves at technology events.

Dev LifeCommunityProgramming Talk

6 min

The Mars Rover Saga - IntelliJ Shortcuts

This article is part of the Mars Rover Saga, where we show the development of the kata and what we learn along the way. This one has no particular order, so you don't need to read previous chapters.

Clean CodeTestingJava

5 min

Hexagonal Architecture in Spring

In these weeks I have been rediscovering Java, with the aim of polishing the basics and practicing many of the common concepts of development. I also started learning one of its most well-known frameworks, Spring Boot.

Clean CodeJavaSpring

10 min

Bringing Functional Programming Down to Earth

Imagine you're building an application and come across a recurring problem: handling complex data and the operations you want to perform on it. Functional programming is a paradigm that can help you address this challenge elegantly and efficiently.

Functional ProgrammingTypeScript

6 min

Merging Git Repositories Without Dying in the Attempt

In this article I'm going to explain how to merge several Git repositories into one, also carrying over the commit history from each of the repositories we want to merge.

GitGithubKata

10 min

Island Architecture in Astro

Island architecture or Astro Islands refers to the existence of interactive UI components in a predominantly static HTML page. Multiple islands can coexist on the same page, and each island renders in isolation.

AstroWebArquitectura

15 min

Applying SOLID Principles in React

The SOLID principles are one of the most important foundations in software architecture and development. SOLID is an acronym coined by Michael Feathers, based on the OOP principles compiled by Robert C. Martin.

Clean CodeSOLIDReact