Artículos
-
Python
Dos patrones para reducir el coste de LLM en aplicaciones RAG con Python
Usar RAG con un LLM potente puede disparar la factura de tokens si no controlas cuánto contexto envías. Aprende a aplicar caché semántica y reescritura de consultas para reducir el gasto entre un 40% y un 60% sin perder calidad en las respuestas.
-
C#
Source Generators en C#: metaprogramación en tiempo de compilación sin reflection
Los Source Generators de C# permiten generar código en tiempo de compilación analizando el árbol sintáctico del proyecto, eliminando la necesidad de reflection en runtime para serialización, mapeo y otras tareas repetitivas. Desde .NET 6, los Incremental Source Generators ofrecen además un ...
-
Java
Java moderno en 2026: records, sealed classes, pattern matching y text blocks
Desde Java 16 hasta Java 21, el lenguaje ha incorporado features que eliminan el boilerplate de siempre: records, sealed classes, pattern matching para instanceof y switch, record patterns y text blocks. Aquí tienes cómo funcionan y cuándo usarlos.
-
Javascript
Funciones flecha en JavaScript: diferencias reales con function y cuándo usarlas
Las arrow functions no son solo sintaxis más corta: no tienen su propio this, no tienen arguments y no sirven como constructores. Aprende las diferencias clave con function y cuándo es mejor no usarlas, con ejemplos reales que incluyen el bug típico del this.
-
Generales
Structs en Rust: agrupar datos y añadir métodos con impl
Guía práctica sobre structs en Rust: definición, instanciación, mutabilidad de instancia entera, struct update syntax, tuple structs y unit structs. Cómo añadir métodos con impl usando referencias, referencias mutables o por consumo, y el patrón de constructor new().
-
Python
Generadores en Python: yield, lazy evaluation y cómo ahorrar memoria
Los generadores de Python producen valores uno a uno con yield en lugar de calcularlos todos a la vez. Aprende la diferencia de memoria frente a listas, cómo encadenar generadores en pipelines, generar secuencias infinitas y usar send() y throw() para comunicación bidireccional.
-
PHP
str_contains, str_starts_with y str_ends_with en PHP 8
Aprende a usar str_contains(), str_starts_with() y str_ends_with(), introducidas en PHP 8.0, que reemplazan el confuso strpos() !== false con booleanos directos. Incluye comparativas con PHP 7, ejemplos reales con URLs, ficheros y formularios, y el comportamiento con cadena vacía.
-
Javascript
Optional chaining ?. y nullish coalescing ?? en JavaScript moderno
Aprende a usar optional chaining (?.) y nullish coalescing (??) en JavaScript ES2020: accede a propiedades anidadas sin comprobar null en cada nivel y define valores por defecto que no te traicionan con 0 o cadenas vacías. Incluye nullish assignment ??= y errores frecuentes.
-
Generales
Arrow en Kotlin: programación funcional con Either, Raise y coroutines
Arrow es una librería para Kotlin que añade tipos funcionales como Either y el DSL Raise para manejar errores sin excepciones, con integración nativa con coroutines. Arrow 2.x ha simplificado su API y resulta especialmente útil en capas de dominio con lógica compleja.
-
Javascript
TypeScript en Node.js en 2026: tsx, strip types nativo y Bun sin configurar
En 2026 hay varias formas de ejecutar TypeScript directamente en Node.js sin pasar antes por tsc: strip types nativo, tsx, ts-node y Bun. Cada una tiene su sitio.









