Blog
Guías y análisis para desarrolladores
Artículos prácticos sobre flujos de desarrollo, formatos de datos y tareas cotidianas para entender mejor el problema y usar cada herramienta con criterio.
- 3D / Estereoscopía / Visión libre / Anaglifo
Cómo ver en 3D sin gafas (visión paralela y cruzada)
«3D sin gafas» se usa para tres cosas que no tienen nada que ver entre sí. Esta es la que funciona en cualquier pantalla que ya tengas: una forma práctica de aprender a fusionar, la regla de tamaño que decide si es posible y qué hacer cuando no sale.
Leer artículo - SSL / TLS / SAN / SNI / Dominio / HTTPS
¿Por qué mi certificado SSL no coincide con mi dominio? SAN y SNI explicados
Un error de nombre no siempre significa que el certificado se solicitó mal. El hostname pedido, los SAN, la profundidad del comodín, SNI, DNS, CDN y el balanceador pueden hacer que el cliente reciba otro certificado. Sigue la ruta pública hasta el extremo que realmente lo entrega.
Leer artículo - SSL / TLS / Cadena de certificados / Certificado intermedio / HTTPS
¿Por qué mi cadena de certificados está incompleta? Cómo corregir intermedios ausentes
Un error de cadena no siempre significa que falte un certificado intermedio. El extremo público puede servir una cadena antigua, una CA privada o una cadena con un certificado caducado. Aprende a comparar el handshake público con el despliegue previsto y a corregir el terminador TLS real.
Leer artículo - Correo / Cabeceras / DMARC / Seguridad / Phishing
Cómo leer las cabeceras de un correo (y detectar un remitente falso)
Las cabeceras son el único registro de primera mano de cómo viajó un mensaje. Lee Authentication-Results, recorre la cadena Received hacia atrás y reconoce las marcas de un remitente suplantado.
Leer artículo - SSL / TLS / Certificados / HTTPS / Seguridad
Por qué mi certificado SSL no es válido y cómo localizar la causa
Un aviso del navegador no prueba que el archivo del certificado sea el problema. Revisa caducidad, SAN, cadena de confianza, intermedios, SNI, TLS y DNS en orden para encontrar la capa que falla.
Leer artículo - Correo / DMARC / SPF / DKIM / Entregabilidad
De p=none a p=reject sin perder tu propio correo
Un despliegue de DMARC por etapas: leer primero los informes agregados, encontrar todos los remitentes legítimos, usar t=y como freno ahora que pct desapareció y solo entonces aplicar la política.
Leer artículo - Correo / SPF / DKIM / DMARC / DNS
SPF, DKIM y DMARC: qué hace realmente cada uno
Tres registros con tres trabajos distintos. Qué comprueba cada uno, por qué la alineación es la pieza que hace funcionar a DMARC y cómo un correo puede pasar SPF y aun así fallar DMARC.
Leer artículo - chmod / Unix / permisos de archivos / Linux
¿Permission denied incluso después de chmod? Las causas
Si cambiaste chmod y el sistema sigue mostrando Permission denied, el modo del archivo puede no ser el problema. Revisa el camino, la propiedad, montajes, SELinux, AppArmor, ACL, sticky bit y atributos del sistema de archivos.
Leer artículo - chmod / Unix / permisos de archivos / Linux
chmod 644 vs 755: ¿cuál usar en cada caso?
644 suele servir para archivos y 755 para directorios o programas ejecutables, pero aplicar esa regla sin contexto puede abrir datos privados. Aprende a tratar árboles mixtos, umask y directorios compartidos con setgid.
Leer artículo - chmod / Unix / Permisos de archivos / Linux
¿Qué significa chmod 755? (y cómo leer cualquier permiso)
Los dígitos de chmod 755 no son magia: codifican quién puede leer, escribir y ejecutar. Aprende a leer 755, 644 y 700 de un vistazo, y por qué ejecutar significa otra cosa en un directorio.
Leer artículo - Cron / crontab / Depuración / DevOps
¿Por qué no se ejecutó mi tarea cron? Una guía de campo para fallos silenciosos
«No se ejecutó» esconde tres fallos distintos: nunca se disparó, se disparó pero murió en la primera línea, o funcionó bien donde no puedes verlo. Esta guía los distingue, empezando por el log de cron.
Leer artículo - Cron / crontab / Programación de tareas / DevOps
Ejemplos de cron: cada minuto, hora, día, semana y mes
Ya sabes la cadencia que quieres — cada 5 minutos, entre semana a las 9, el día 1 — y solo te falta la línea. Expresiones cron listas para copiar, y los pocos casos donde lo obvio está mal.
Leer artículo - Cron / crontab / Programación de tareas / DevOps
Cómo leer una expresión cron (y escribir una que se ejecute cuando crees)
Una expresión cron son cinco campos en posiciones fijas y cuatro símbolos. Aprende a leerla de un vistazo y esquiva las dos trampas que la ejecutan a la hora equivocada.
Leer artículo - Hashing / Checksums / Codificación / Depuración
¿Por qué el mismo archivo tiene un hash diferente?
Calculas el hash de un archivo, alguien calcula el de una copia que da por idéntica, y los resúmenes no coinciden. Un hash es una de las cosas más deterministas de la computación, así que el valor solo cambió porque los bytes cambiaron: en silencio, de forma invisible. Esta guía recorre los sospechosos habituales —codificación, BOM, finales de línea, modo texto frente a binario, datos estructurados y comprimidos reempaquetados— y termina mostrando cómo normalizar para que los hashes vuelvan a coincidir.
Leer artículo - Hashing / Checksums / MD5 / SHA-256 / Seguridad
MD5 vs SHA-256 para checksums: ¿cuál deberías usar?
«MD5 está roto, no lo uses nunca» es el consejo que oirás, y es medio cierto, lo que lo hace peligroso. Que MD5 sea aceptable o temerario para un checksum depende por completo de una pregunta que tienes que responder antes: ¿alguien intenta engañarte? Esta guía separa los dos trabajos que hace un checksum, muestra qué hash necesita cada uno y explica por qué recurrir a un hash más fuerte suele ser el arreglo equivocado.
Leer artículo - Hashing / Checksums / Integridad / Depuración
¿Por qué no coincide mi checksum? Guía de hashes que no cuadran
Un checksum que no coincide parece una alarma, pero la alarma solo tiene una posición: los dos flujos de bytes no son iguales. No te dice por qué. La habilidad no está en volver a calcular el hash, sino en acotar el desajuste a una de tres causas: los datos de verdad difieren, estás comparando los dos hashes de forma injusta, o el valor de referencia en el que confías es el que está mal. Esta guía recorre las tres.
Leer artículo - YAML / Cadenas / Análisis / Configuración
Cadenas multilínea en YAML: cuándo usar | y cuándo usar >
Un valor multilínea en YAML tiene dos símbolos de bloque, una barra vertical y un signo mayor que, y además tres estilos escalares —plano, con comillas simples y con comillas dobles— que también abarcan varias líneas. Cada uno conserva o pliega tus saltos de forma distinta, y elegir mal convierte un script en una sola línea rota. Aquí está el cuadro completo, con las trampas.
Leer artículo - YAML / Análisis / Depuración / Configuración
¿Por qué se rompe mi YAML? Los errores ruidosos y los silenciosos
Dos tickets llegan la misma mañana y ambos dicen «se rompió mi YAML». Uno es un error de análisis rojo en la línea 12, resuelto en un minuto. El otro es un servicio que arrancó bien pero se comporta mal, porque un valor sin comillas se convirtió en silencio en otra cosa. Son problemas opuestos, y el peligroso es el callado.
Leer artículo - JSON / YAML / TOML / Configuración
JSON vs YAML vs TOML: qué formato de configuración elegir y por qué
Un pull request añade un archivo de configuración pequeño y la revisión descarrila en cuarenta comentarios —¿YAML? ¿TOML? ¿mejor JSON?— y no cambia nada. El hilo se atasca en la pregunta equivocada: ¿cuál es el mejor formato? No existe un formato universalmente mejor. La mayor virtud de cada uno viene con un defecto a juego, y en cuanto lo ves, la elección se reduce a dos preguntas mucho más simples.
Leer artículo - JSON / jq / CLI
Cómo consultar un archivo JSON enorme sin escribir un script
No necesitas un parser de usar y tirar para sacar un valor de una exportación JSON gigante — demasiado grande para abrirla en un editor. Obtener datos de un JSON es un problema de consulta, y
Leer artículojq, JSONPath y DuckDB lo resuelven, hasta en archivos demasiado grandes para la memoria. - Bases numéricas / Hexadecimal / Binario
Hexadecimal, binario y decimal: leer los números que los programadores de verdad usan
Un color es
Leer artículo#FF5733. Un modo de archivo eschmod 755. Una comprobación de permisos esflags & 0x04. Una constante es0b1010, o0xFF, o255. Cada uno parece su propio dialecto, pero son un mismo número con ropa distinta —y la soltura que hace que todo deje de ser fricción es más pequeña de lo que parece: hex para bytes, binario para bits, decimal para humanos. - Codificación URL / Codificación / Depuración
¿Por qué se rompe mi codificación de URL? Percent-encoding y + vs %20
Pones
Leer artículocaféen una URL y llega comocafé. Un espacio es+en un sitio y%20en otro. Un&dentro de un valor parte tu query en dos. Algo se codificó dos veces y ahora lees%2520. Todos parecen bugs distintos, pero son una idea con dos vueltas de tuerca: el percent-encoding escapa bytes que una URL no puede escribir tal cual, las reglas cambian por componente, y un espacio tiene dos codificaciones legales. - Base64 / Codificación / Depuración
¿Qué es Base64 y por qué no se decodifica el mío?
Pegas una cadena Base64 en un decodificador y devuelve «Invalid character» —o peor, funciona y te entrega una pantalla de galimatías—. Casi nunca hay nada corrupto. Has cometido un error de categoría sobre qué es Base64: ni cifrado ni compresión, solo una forma reversible de llevar bytes por canales de solo texto —y en cuanto lo ves, cada fallo de decodificación se vuelve un elemento de una lista corta y concreta.
Leer artículo - Timestamps / ISO 8601 / Bases de datos / Fecha y hora
¿Guardo una fecha como timestamp o como cadena ISO?
Una revisión de código se atasca en una columna: alguien guardó un timestamp Unix entero, otra persona una cadena ISO, y la API de terceros devuelve texto que termina en Z. ¿Cuál es «lo correcto»? La discusión casi siempre encalla en entero contra cadena, que es la pregunta menos importante y la última que hay que hacer. Lo que decide es todo lo que viene antes.
Leer artículo - Zonas horarias / Fecha y hora / DST / Depuración
¿Por qué mi fecha cambia de día? Zonas horarias y fechas de calendario
Guardas un cumpleaños como 1 de mayo y se muestra el 30 de abril. Programas un evento para el 15 de julio y el calendario marca el 14. El informe diario cuenta la fila equivocada. La causa casi siempre es la misma: una fecha de calendario no es un punto en el tiempo, y el bug ocurre en la frontera donde una fecha sin zona se cruza con un instante con zona.
Leer artículo - Zonas horarias / UTC / ISO 8601 / Fecha y hora
UTC, GMT, ISO 8601 y timestamp Unix: ¿cuál es la diferencia?
UTC, GMT, una cadena terminada en Z, +08:00, un número de diez dígitos: se usan como si fueran lo mismo, y confundirlos es justo por donde se cuelan los bugs de tiempo. No son variantes de «la hora»; están en cuatro capas distintas. Aquí se separan la escala de referencia, la zona, el offset y las dos formas de escribir un instante.
Leer artículo - Timestamps / Zonas horarias / JavaScript / Depuración
¿Por qué mi timestamp Unix está mal? Segundos, milisegundos y zonas horarias
Un timestamp que muestra la hora equivocada casi nunca es un número roto: es un error de categoría. Un timestamp Unix no es una fecha y no tiene zona horaria; es un único recuento de segundos desde un instante fijo. En cuanto separas el instante de cómo se representa, «desfasado por décadas», «desfasado por tres horas» y «desfasado por un día» se reducen cada uno a una causa concreta y localizable.
Leer artículo - JWT / Autenticación / Seguridad / Sesiones
Tokens de vida corta, rotación de refresh y cómo revocar un JWT
La forma en que suelen desplegarse los JWT —como access tokens autocontenidos que un servidor verifica localmente, sin consultar ningún estado— es justo la razón por la que no puedes recuperarlos con facilidad: son válidos hasta que caducan, hagas lo que hagas en el servidor. Este artículo trata de cómo gestionar eso: vidas cortas del access token, refresh tokens y rotación con detección de reutilización, y las opciones reales para revocar un token autocontenido, cada una con su equilibrio frente a la ausencia de estado por la que elegiste el JWT.
Leer artículo - JWT / Seguridad / Frontend / Autenticación
¿Dónde debería guardar un JWT? localStorage, cookies y el equilibrio entre XSS y CSRF
Dónde guardar un JWT en el navegador se suele plantear como si un sitio fuera sin más «más seguro». No es un ranking. Cada opción responde de forma distinta a dos preguntas —si el JavaScript puede leer el token y si el navegador lo adjunta solo— y esas dos preguntas son, en el fondo, XSS y CSRF. Este artículo recorre localStorage, cookies y memoria, los patrones que se han impuesto, y por qué frenar el XSS importa más que cualquier elección de almacenamiento.
Leer artículo - JWT / Seguridad / Autenticación / Depuración
¿Es seguro mi JWT? Cómo se elude la verificación de un token
Muchos incidentes de seguridad con JWT no rompen la criptografía: explotan un verificador que acepta un token escrito por un atacante o que no verifica nada. El error de fondo es dejar que datos no verificados del token influyan en cómo el código lo comprueba. Esta guía explica los principales ataques y las reglas que los detienen.
Leer artículo - JWT / Autenticación / Depuración / Seguridad
¿Por qué mi JWT no es válido? Cómo decodificar y depurar un JSON Web Token
Un 401 que dice 'invalid token' casi nunca significa que el token esté corrupto: significa que una comprobación concreta entre tú y el servidor falló. En vez de coleccionar trucos de decodificación, entiende qué es realmente un JWT: texto plano firmado que siempre puedes leer, pero en el que solo debes confiar tras verificarlo. Entonces cada fallo se vuelve una lista corta y ordenada.
Leer artículo - expresiones regulares / anticipación / JavaScript
¿Cómo hacer coincidir texto sin consumirlo? Anticipación y retrospección en regex
Tu regex coincide, pero a match[0] le falta el trozo que esperabas; o tu comprobación de contraseña necesita tres reglas a la vez. Ambas cosas se reducen a una idea: la anticipación y la retrospección revisan el texto sin consumirlo. Aquí verás cómo funcionan de verdad las aserciones de ancho cero y el puñado de cosas que hacen fáciles.
Leer artículo - expresiones regulares / ReDoS / rendimiento / seguridad
¿Por qué mi regex es tan lenta? Retroceso catastrófico y ReDoS
Una regex que va fina con entradas cortas y congela la página con una entrada algo más larga casi nunca es lenta: es exponencial. Aprende a reconocer el retroceso catastrófico por su forma, entiende el ataque ReDoS que hay detrás y reescribe el patrón para dejarlo seguro.
Leer artículo - expresiones regulares / depuración / JavaScript
¿Por qué mi regex no coincide? Empieza por entender el motor
Una regex que «no coincide» casi siempre ha coincidido, solo que no con el tramo que esperabas. En vez de memorizar trucos, entiende cómo el motor recorre el texto y retrocede: voraz, perezoso, anclas, anticipación y retroceso catastrófico son caras de un mismo mecanismo.
Leer artículo - JSON / depuración / formateo
Cómo arreglar un JSON que no parsea (y ordenar el desastre que queda)
Un error de parseo suele significar que la entrada nunca fue JSON estricto. Aprende a leer el error, detectar los cinco fallos habituales y dejarlo legible.
Leer artículo - JSON / diferencias / flujo de trabajo
Cómo comparar dos archivos JSON y ver solo los cambios reales
Un diff de texto confunde formato y orden de claves con cambios de datos. Aprende a comparar JSON desde la terminal, el editor, el código y el navegador.
Leer artículo