← Inicio

Blog técnico

Problemas reales, soluciones concretas. Artículos sobre tecnología que uso en proyectos.

phplaravelbase-de-datos

PDOException [2002]: No such file o directory, el clásico dolor de cabeza

Ese frustrante error `SQLSTATE[HY000] [2002] No such file or directory` te tiene contra la pared. A mí también me pasó en un proyecto y te cuento cómo lo solucioné, partiendo por lo más simple.

31 de julio de 2026

ICE Candidates en WebRTC: El mapa para una conexión P2P exitosa

Estás montando un chat con WebRTC y te topas con los ICE Candidates. ¿De dónde salen, para qué sirven, y por qué tu colega tiene menos? Aquí desglosamos el misterio.

31 de julio de 2026
RedisMISCONFRDB

Error MISCONF en Redis: Reiniciar vs. Ignorar Fallas RDB

El error MISCONF en Redis desactiva las escrituras. Analizamos dos enfoques comunes para resolverlo: reiniciar el servidor o forzar la continuación de las escrituras, y cuándo usar cada uno.

30 de julio de 2026
github-actionsciautomatizacion

Simplifica tu GitHub Actions: Adiós al 'cd' repetido

Cansado de poner 'cd subdirectorio' en cada paso de tu CI? Te muestro cómo simplificar tus flujos de trabajo en GitHub Actions y evitar la repetición innecesaria.

30 de julio de 2026
FlutterDartUI

¿Botones redondos en Flutter? No te compliques la vida

Estilizar botones en Flutter puede ser un dolor de cabeza si usas la solución más votada sin pensar. Te muestro cómo hacerlo simple y directo, sin sobreingeniería.

29 de julio de 2026
pythondiccionariosprogramacion

¿Fusionar diccionarios en Python? La respuesta obvia no es la mejor

A menudo, la forma más intuitiva de combinar diccionarios en Python esconde trampas de rendimiento y legibilidad. Te muestro las opciones y por qué algunas son mejores.

29 de julio de 2026
dockerdevopslinux

Obtener IP de Docker: Olvida grep, hay una forma mejor

Cuando buscas la IP de un contenedor Docker, la solución obvia con grep no es la más robusta. Te muestro el comando que uso yo y por qué es superior.

28 de julio de 2026
kuberneteskubectldevops

kubectl create vs apply: No es lo mismo y tu pipeline lo sabe

Entender la diferencia entre kubectl create y apply te ahorra errores en producción y frustraciones con tu CI/CD. Una es imperativa, la otra declarativa.

28 de julio de 2026
Next.jsChunkLoadErrorWeb development

ChunkLoadError en Next.js: La solución más simple (casi siempre)

El ChunkLoadError en Next.js es un dolor de cabeza común que a menudo se atribuye a misterios de Webpack. Mi experiencia dice que casi siempre es un problema de caché.

27 de julio de 2026

Npm WARN: 'No repository field' – ¿Hay que preocuparse?

Esa advertencia de npm sobre el campo 'repository' es común y, en la mayoría de los casos, inofensiva. Te explico por qué y cómo silenciarla.

27 de julio de 2026
SQLBase de DatosJOIN

SQL JOINs: Cuándo usar INNER, LEFT, RIGHT y FULL en tus consultas

A menudo, veo desarrolladores complicarse con los JOINs en SQL cuando la solución más simple basta. Entender las diferencias es clave para escribir consultas eficientes.

26 de julio de 2026
nginxredireccionesweb-server

Nginx: Redirigiendo www y no-www de forma correcta (y eficiente)

Configurar redirecciones www o no-www en Nginx es más simple de lo que parece. Te muestro cómo hacerlo usando `return 301` para mantener tu SEO y optimizar el rendimiento.

26 de julio de 2026
FirestoreFirebaseBase de Datos

Contar documentos en Firestore: La solución obvia no siempre es la mejor

Contar documentos en Cloud Firestore parece sencillo, pero la solución más directa a menudo es una trampa. Descubre por qué un simple conteo puede salirte caro y cómo hacerlo bien.

25 de julio de 2026
mongodbmongoosearrays

MongoDB: Buscar un valor en array simple sin complicarse (de más)

Muchos desarrolladores buscan un operador especial para encontrar un valor dentro de un array en MongoDB. La solución es más simple de lo que crees y yo mismo la aprendí tarde.

25 de julio de 2026
FastAPIPythonAPI

Sirviendo Imágenes en FastAPI: Lo Simple es Mejor

Aprende a servir imágenes en FastAPI de forma eficiente y sin sobreingeniería. Exploramos las opciones correctas y advertimos sobre errores comunes que veo en repositorios por ahí.

24 de julio de 2026
react nativelinuxdesarrollo web

Error ENOSPC en React Native: La solución directa que yo uso

Si te topas con el error ENOSPC en React Native o cualquier proyecto con hot-reloading, tu sistema alcanzó el límite de archivos a vigilar. Te muestro la solución directa.

23 de julio de 2026
mavenjavaspring-boot

¿mvn o ./mvnw? La clave para un Maven consistente

Entiende por qué los archivos mvnw y mvnw.cmd son esenciales en tus proyectos Spring Boot y cómo te ahorran dolores de cabeza con las versiones de Maven. Simplicidad que funciona.

23 de julio de 2026
TypeScriptDesarrolloWebProgramacion

El operador '!' en TypeScript: La solución obvia que no lo es

Muchos creen que el operador '!' en TypeScript te salva de los null. La verdad es que su función es solo para el compilador y puede esconder problemas en runtime.

22 de julio de 2026
javascriptweb-apigetUserMedia

Permisos de cámara/micrófono: Cuando el usuario dice 'no'

Qué hacer cuando un usuario niega el acceso a la cámara o micrófono. Entender cómo funcionan los permisos es clave para no frustrarte ni frustrar a tus usuarios.

22 de julio de 2026
TerraformDevOpsInfraestructura como Código

Terraform: Desbloqueando el temido ConditionalCheckFailedException

El error <code>ConditionalCheckFailedException</code> de Terraform es frustrante y común. Te explico por qué ocurre y cómo puedes resolverlo de forma segura.

21 de julio de 2026
Next.jsSupabaseErrores

Error 'encoding' en Next.js con Supabase: ¿Ignorar o instalar?

Estás montando tu app Next.js con Supabase y de repente, el error del módulo 'encoding' te frena. ¿Es un aviso inofensivo o algo que necesitas solucionar ya?

21 de julio de 2026
KafkaEvent SourcingCQRS

¿Kafka como Event Store? La verdad de un developer chileno

Muchos se preguntan si Kafka es la base perfecta para un Event Store. Funciona muy bien como log de eventos, pero sus defaults y diseño te harán pensar dos veces.

20 de julio de 2026
postgresqlpsqlbases de datos

¿Cómo listar tablas en PostgreSQL? Las formas que yo uso

Si necesitas ver las tablas en tu base de datos PostgreSQL, la forma no es tan obvia como en MySQL. Te muestro las dos maneras principales y cuál prefiero.

20 de julio de 2026
nginxproxyfastcgi

Nginx: 'upstream sent too big header' y cómo arreglarlo bien

El error 'upstream sent too big header' en Nginx es común, pero la solución obvia no siempre es la correcta. Necesitas saber qué tipo de upstream usas.

19 de julio de 2026
kafkamensajeriadesarrollo

¿Borrar un topic de Kafka para purgar? No siempre es la mejor idea

Cuando un mensaje gigante atasca tu topic de Kafka, la primera reacción es borrar y recrear. Pero espera, hay una forma mucho más elegante y segura de limpiar ese topic sin perder su configuración.

19 de julio de 2026
npmjavascriptnode.js

El misterio de `--save` en npm install: ¿Todavía lo necesitas?

Muchos aún usan `npm install --save`, pero esta bandera ya no es necesaria en npm moderno. Te explico por qué y cómo gestionar tus dependencias correctamente.

18 de julio de 2026
react-nativejavascriptteclado

¿Cómo esconder el teclado en React Native? La solución que me costó encontrar

Esconder el teclado en React Native debería ser simple, pero no siempre lo fue. Te muestro las opciones y cuál prefiero yo para la mayoría de los casos.

18 de julio de 2026
npmjavascriptpackage-json

¿Dependencies, devDependencies, peerDependencies? La verdad que nadie explica bien

Entender las dependencias en `package.json` es crucial. Te explico la diferencia entre `dependencies`, `devDependencies` y `peerDependencies` de forma simple.

17 de julio de 2026
webrtcmediastreamjavascript

Grabar webcam y audio: la solución simple que no ves a la primera

Muchos piensan en WebRTC para grabar cámara y audio, pero la API MediaRecorder es a menudo la respuesta más directa y sin complicaciones.

17 de julio de 2026
Spring BootLoggingJava

¿Logs en Spring Boot? Así los controlas desde application.properties

Estás desarrollando en Spring Boot y necesitas ajustar los logs para depurar o simplemente tener un control decente. Te muestro cómo hacerlo de forma simple y sin dar mil vueltas, directo desde application.properties.

16 de julio de 2026

¿Archivo Tar o Pipe SSH? Moviendo Imágenes Docker sin Registry

Mover imágenes Docker entre servidores sin un registry puede ser un dolor de cabeza. Te muestro dos métodos para hacerlo y cuándo usarías cada uno, sin complicarte.

16 de julio de 2026

¿Cámara en tu PWA de iOS? La pesadilla de iOS 11 y cómo zafamos

Acceder a la cámara desde una Progressive Web App en iOS 11 era un dolor de cabeza. Aquí te cuento por qué y qué hicimos cuando Apple nos puso el pie encima.

15 de julio de 2026
Node.jsOpenSSLErrores

Error Node.js 0308010C: Soluciones de verdad (y por qué no usar hacks)

¿Te topaste con el temido error `0308010C:digital envelope routines::unsupported` en Node.js? Esto no es un bug tuyo. Aquí te explico por qué ocurre y cómo solucionarlo de forma correcta.

15 de julio de 2026
pythonprogramaciondesarrollo

Python: El Guardián `if __name__ == "__main__":` que te salva

Esa línea de código que ves en casi todos los scripts de Python no está de adorno. Te explico por qué es crucial y cómo me salvó de varios dolores de cabeza.

14 de julio de 2026
Node.jsExpress.jsGET

Express.js: Cómo obtener parámetros GET sin sobreingeniería

Olvídate de parsear URLs manualmente en Express.js. La forma de obtener parámetros GET ya está integrada y es más simple de lo que crees.

14 de julio de 2026
nginxphp-fpm502 error

Nginx y PHP-FPM: 502 por permisos en el socket, ¿cómo arreglarlo?

Si te apareció un error 502 en Nginx con "connect to php-fpm.sock failed (13: Permission denied)", es probable que una actualización de PHP sea la culpable. Aquí te cuento cómo lo soluciono.

13 de julio de 2026
pythonpandasdata-science

Pandas y Datos Grandes: ¿HDFStore o Archivos Pequeños?

Cuando los datasets superan la memoria RAM, pandas ofrece opciones. Exploro dos caminos: la flexibilidad de HDFStore y la sencillez de dividir archivos, cuándo usar cada uno.

13 de julio de 2026
AndroidGradleFabric

Error 'getExternalNativeBuildTasks': La solución simple para Fabric y Gradle

El error 'variant.getExternalNativeBuildTasks()' puede volverte loco en Android Studio. Te explico por qué aparece y la solución más directa para que no pierdas tiempo.

12 de julio de 2026
flutterfirebasegoogle-sign-in

Flutter Google Sign-In: Cuando el PlatformException 10 te quema

Ese molesto PlatformException(sign_in_failed, 10) en Flutter es más común de lo que crees. Aquí te explico por qué aparece y la solución que yo aplico, sin dar muchas vueltas.

12 de julio de 2026

Pods en Terminating: ¿Solución rápida o buscar la raíz?

Cuando un pod de Kubernetes se queda pegado en estado 'Terminating', mucha gente recurre al borrado forzado. Yo creo que esa es casi siempre la respuesta equivocada.

11 de julio de 2026
redisbase de datosdevops

¿Borrar claves Redis por patrón? Ojo con la estrategia y la performance

Cuando necesitas borrar claves de Redis que siguen un patrón, hay dos enfoques principales que puedes considerar. La elección correcta depende si buscas una eliminación inmediata y atómica o una estrategia de gestión de datos a largo plazo.

11 de julio de 2026
nodemonlinuxenospc

Nodemon y ENOSPC: Cuando tu Linux se queda sin vigilantes de archivos

Si te topaste con el error 'System limit for number of file watchers reached' usando Nodemon en Linux, no te preocupes, no eres el único. Es un problema común y tiene una solución directa que te explico acá.

10 de julio de 2026

El significado de '@/' en imports: Webpack y TypeScript

Desmitificamos el símbolo '@' en tus rutas de importación. Descubre cómo Webpack y TypeScript lo usan para simplificar tu código, mejorar la lectura y mantener tus proyectos ordenados.

9 de julio de 2026

El clásico 'Can't set headers': Por qué te pasa en Node.js y cómo evitarlo

Ese molesto error 'Can't set headers after they are sent' en Node.js/Express confunde a muchos. Te explico la raíz del problema y cómo solucionarlo de forma sencilla.

9 de julio de 2026
mysqlauto_incrementsql

Resetear AUTO_INCREMENT en MySQL: La guía directa y sin rodeos

Estás limpiando una tabla o haciendo pruebas y necesitas que el AUTO_INCREMENT de MySQL vuelva a cero. Te muestro cómo hacerlo de forma rápida y sin complicaciones.

8 de julio de 2026
laraveleloquentphp

Laravel Eloquent: Cómo manejar múltiples WHERE sin enredarse

Cuando necesitas filtrar datos en Laravel con varias condiciones, te encuentras con distintas formas de escribir tus `WHERE`. Exploro las opciones y cuándo usar cada una para mantener tu código legible y eficiente.

8 de julio de 2026
webrtcaudioagc

WebRTC AGC: El flujo que muchos olvidan y por qué importa

Muchos integran el AGC de WebRTC sin entender su ciclo completo, y luego se preguntan por qué no funciona. No basta con llamar las funciones, hay un orden y un estado clave.

7 de julio de 2026
postgresqlpsqlcli

Cómo salir de psql: El comando clave para la consola de PostgreSQL

Aprender a salir de la consola de PostgreSQL es básico, pero a veces no tan obvio. Te muestro la forma más directa y confiable.

7 de julio de 2026
nginxdjangofastcgi

¿Dónde están los logs de error de Nginx con Django y FastCGI?

Cuando tu proyecto Django cae con un 500 y usas Nginx + FastCGI, ¿dónde buscas los errores? La respuesta es más simple de lo que crees: en los logs de Nginx.

6 de julio de 2026
vuejsvue-routerjavascript

Obtener Parámetros URL en Vue: ¿`$route` o `URLSearchParams`?

Te explico cómo obtener parámetros de la URL en Vue.js. Veremos cuándo usar el objeto `$route` y cuándo es mejor recurrir a `URLSearchParams`.

6 de julio de 2026