Artículos
-
Javascript
Source maps y debugging de TypeScript: configurar VS Code, Node.js y tests con breakpoints
Aprende a configurar source maps en TypeScript para depurar con breakpoints directamente en tus archivos .ts, sin ver el JS compilado. Configuración de tsconfig.json, VS Code launch.json, tests de Jest con --runInBand y tsx con --inspect-brk.
-
Lua
Lua en videojuegos: LÖVE 2D y Defold, los frameworks que usan Lua como lenguaje de scripting
LÖVE 2D y Defold son dos frameworks para videojuegos que usan Lua como lenguaje de scripting. Aprende las diferencias entre ambos, sus APIs principales y cómo estructurar un proyecto de juego en Lua desde cero.
-
Erlang
Gleam compilado a JavaScript: usando Gleam en el frontend y con Node.js
Gleam puede compilar a JavaScript además de a Erlang. Genera módulos ESM compatibles con Node.js, Deno y el navegador. Con @external puedes llamar a código JS desde Gleam, y Lustre ofrece UI reactiva en el navegador con tipos seguros.
-
Generales
Kafka en Go con confluent-kafka-go: producer, consumer, grupos de consumo y offsets
Aprende a usar Apache Kafka en Go con confluent-kafka-go: cómo crear un producer, manejar el canal de eventos para confirmaciones de entrega, configurar consumers con grupos de consumo y gestionar offsets con commit manual para garantizar que no pierdes mensajes.
-
Javascript
Seguridad JavaScript: XSS, Content Security Policy, sanitización y DOMPurify
Aprende a proteger tu código JavaScript del lado del cliente contra XSS (reflected, stored y DOM-based), cómo usar DOMPurify para sanitizar HTML de usuario, Content Security Policy con nonces, Trusted Types en Chrome y por qué innerHTML mal usado es una puerta de entrada para atacantes.
-
Generales
Const generics en Rust: parámetros de tipo que son valores constantes
Los const generics, estables desde Rust 1.51, permiten usar valores constantes como parámetros genéricos. Aprende a crear structs con tamaño fijo, implementar traits para arrays de cualquier longitud y cuáles son los tipos válidos como const params.
-
Generales
URLSession con async/await en Swift: descargas, uploads, WebSocket y streaming
Aprende a usar URLSession con async/await en Swift: peticiones con data(from:), streaming con AsyncBytes, descargas a fichero, subidas, WebSocket con webSocketTask y sesiones ephemeral. Con el antipatrón más habitual y cómo cancelar tareas correctamente.
-
Python
subprocess en Python: run, Popen, communicate, pipes y ejecución de comandos del sistema
Aprende a usar el módulo subprocess de Python para ejecutar comandos del sistema: subprocess.run() con capture_output, check y timeout; subprocess.Popen con communicate() y poll(); shlex.split() y los peligros de shell=True con datos del usuario.
-
Javascript
Leer errores de TypeScript: entender mensajes complejos, pretty-ts-errors y técnicas de depuración
Cómo leer y entender los errores complejos de TypeScript: estrategia de lectura de abajo a arriba, @ts-expect-error para aislar, reveal_type, AssertEqual, la extensión pretty-ts-errors, el tipo Simplify para expandir tipos opacos y cómo resolver errores de tipos circulares.
-
Generales
cgo en Go: llamar a código C desde Go, importar librerías C y cuándo evitarlo
cgo permite llamar funciones C desde Go usando import C con un preámbulo de comentario. Aprende a convertir strings con C.CString, pasar structs, enlazar librerías con LDFLAGS y exportar funciones Go a C. Incluye el overhead real de cgo y cuándo evitarlo.









