Todos los artículos
-
Mantener visibles los límites de la transacción
Documentar qué cambios de estado se confirman juntos y qué puede ocurrir entre las transacciones de base de datos y las llamadas externas.
-
Morph targets: cómo combinar deltas de vértices sin perder la forma base
Cómo lograr deformaciones faciales y correctivas predecibles: conservar la correspondencia de vértices, usar pesos con semántica aditiva y respetar el orden entre morphing y skinning.
-
Elegir los puntos de control de permisos para trabajos en cola tras revocar el acceso
Hacer explícito el momento de la autorización cuando una solicitud programa un trabajo que se ejecutará más tarde. El ejercicio propuesto separa el permiso para encolar un trabajo del permiso para ejecutarlo y para recuperar su resultado.
-
Comprobar los contratos de marcadores de posición cuando un agente añade texto de interfaz traducido
Preservar el significado en tiempo de ejecución de los marcadores de posición y las variantes de mensaje al traducir texto de interfaz, de modo que una prosa fluida no introduzca sustituciones rotas ni casos faltantes.
-
Python 3.10 tras el fin de su vida útil: localizar intérpretes y reconstruir entornos
La tabla de ciclo de vida del proyecto Python sitúa el fin de la vida útil de Python 3.10 el 1 de octubre de 2026. Inventariar los intérpretes que utilizan realmente los servicios, entornos virtuales e imágenes y, después, reconstruir y probar cada aplicación en una rama con soporte.
-
Pipeline, fan-out, orquestador y panel de críticos: qué patrón multiagente conviene a cada tarea
Un pipeline conviene a tareas con una secuencia fija de transformaciones; el fan-out paralelo conviene a subpreguntas independientes o a intentos repetidos sobre los que votar; un orquestador con trabajadores conviene a tareas cuya descomposición solo se conoce en tiempo de ejecución; un panel de críticos conviene a resultados que necesitan revisión frente a varios criterios; cada uno multiplica el costo en tokens y añade una capa de coordinación que puede fallar por sí misma.
-
Cambiar un registro DNS con una vía de reversión: reducción del TTL, corte y verificación
Un cambio de DNS llega a los usuarios solo tan rápido como expira el TTL antiguo en las cachés, así que hay que bajar el TTL un período completo del TTL antiguo antes del cambio, mantener el destino anterior en servicio hasta confirmar el nuevo en todas partes, y tener en cuenta que algunos resolutores sirven datos obsoletos cuando los servidores autoritativos no están disponibles, como permite el RFC 8767.
-
Variantes de base64: alfabetos estándar y URL-safe, reglas de relleno y rigurosidad de los decodificadores
RFC 4648 define los alfabetos base64 estándar y URL-safe y exige relleno por defecto, pero los JWT lo omiten de forma explícita. MIME divide las líneas a 76 caracteres y el base64 de GNU necesita -w0 para no hacerlo, y los decodificadores, de Python al navegador, discrepan sobre si los caracteres sobrantes o la falta de relleno son errores.
-
Manejo de errores en PowerShell para scripts de administración: errores terminantes, $ErrorActionPreference y $LASTEXITCODE
PowerShell distingue dos clases de errores en un script: los terminantes, que try/catch puede interceptar, y los no terminantes, que solo $ErrorActionPreference o -ErrorAction pueden convertir en una detención. Una tercera clase, los fallos de ejecutables nativos, no sigue ninguno de esos caminos salvo que se active $PSNativeCommandUseErrorActionPreference (PowerShell 7.4+, experimental en 7.3).
-
Usar correctamente los códigos de estado HTTP: la primera bifurcación del cliente
Los clientes, las cachés y los agentes deciden únicamente a partir del código de estado si reintentar, recargar o desistir: 201/204 para el éxito con y sin cuerpo, 401 frente a 403 para la falta de autenticación frente a la falta de autorización, 409/412/428 para conflictos y condiciones previas, 429 y 503 con Retry-After para «más tarde». Un 200 con un objeto de error engaña a todos.
-
Vigilar la caducidad de certificados TLS en todos los endpoints, no solo en el sitio web principal
Un certificado caducado es una interrupción con un momento exactamente predecible; sondear la fecha notAfter de cada certificado realmente servido (web, API, correo, paneles internos, balanceadores de carga) desde el exterior, alertar con antelación suficiente para renovar a mano, y comprobar los intermedios además del certificado hoja.
-
Gestión de entornos de arranque ZFS con beadm y reversión de una actualización fallida
beadm list/create/activate/destroy gestionan los entornos de arranque ZFS que pkg update crea automáticamente cuando una actualización requiere reiniciar. Activar el entorno de arranque anterior y reiniciar es la reversión admitida tras una actualización fallida, sin reinstalar paquetes a mano.
-
Hojas de estilo de impresión: hacer que una página web sea utilizable en papel y como PDF
Una hoja de estilo de impresión oculta la navegación y los controles, expande el contenido colapsado, imprime el destino de los enlaces después del texto del enlace, fija el tamaño de página y los márgenes con @page, evita que las tablas y figuras se corten entre páginas con break-inside: avoid, y le pide al navegador que conserve los colores de fondo esenciales. Pruébala con la vista previa de impresión del navegador, no solo en pantalla.
-
Perfilado continuo en producción: perfiles de muestreo siempre activos y qué preguntas responden
El perfilado continuo toma perfiles de CPU y memoria de forma sistemática a lo largo del tiempo y los almacena como series etiquetadas, de modo que un equipo puede preguntar qué función consumió más CPU en toda la flota ayer o qué cambió entre dos versiones; los perfiladores por muestreo lo hacen lo bastante barato como para dejarlo activo permanentemente, y endpoints de runtime como /debug/pprof/ de Go o agentes eBPF suministran los perfiles.
-
El filtrado por defecto de ripgrep acorta las búsquedas de código de agentes frente a grep -r
Hipótesis: los agentes de codificación que buscan en repositorios con las reglas de exclusión por defecto de ripgrep (se omiten los archivos ignorados por git, ocultos y binarios) necesitan menos llamadas de búsqueda y leen menos salida irrelevante por tarea que los agentes que usan grep -r sin exclusiones, porque faltan las coincidencias en artefactos de compilación y dependencias; no se reporta ninguna medición.
-
Resumir el tiempo en llamadas al sistema con strace -c, su sobrecarga y perf trace como alternativa
strace -c cuenta tiempo, llamadas y errores por cada llamada al sistema en lugar de imprimir todas; el propio manual de strace advierte de que un proceso trazado se ejecuta más despacio que uno sin trazar. perf trace, descrito como una herramienta inspirada en strace y basada en perf_events en lugar de ptrace, es la alternativa más sencilla cuando esa sobrecarga importa.
-
Un día programado de documentación atrae a más contribuyentes primerizos que una convocatoria permanente de ayuda con la documentación
Hipótesis: un proyecto que anuncia un único día con una lista seleccionada de incidencias pequeñas de documentación, personas mantenedoras disponibles para revisión el mismo día y una etiqueta de good-first-issue en cada tarea recibe más cambios de documentación fusionados de personas que nunca habían contribuido que la misma lista dejada abierta todo el año; una comparación propuesta sobre el propio historial de un proyecto.
-
Diseñar una herramienta de línea de comandos en Python: argparse, main() y códigos de salida
Colocar la interfaz en una función main(argv) -> int registrada como console script, validar con type y choices de argparse, seguir la convención de códigos de salida (0 éxito, 2 error de uso, 1 otro fallo, códigos de sysexits solo si están documentados), mantener los resultados en stdout y los diagnósticos en stderr, y gestionar SIGINT y las tuberías rotas.
-
Cómo escribir un script POSIX sh portable entre Linux, BSD, macOS y AIX
Un script que debe ejecutarse sin cambios en dash de Debian, en bash usado como sh en Linux, en FreeBSD, macOS y AIX tiene que ceñirse al Shell Command Language de POSIX y evitar las opciones de herramientas exclusivas de GNU; checkbashisms y una breve lista de diferencias entre comandos GNU y BSD detectan la mayoría de los fallos.
-
Actualizar Debian y Ubuntu a la siguiente versión mayor sin perder una vía de retorno
Tanto do-release-upgrade de Ubuntu como el procedimiento manual de Debian (editar sources.list y luego actualizar) suponen una copia de seguridad completa y una consola de respaldo por si la sesión SSH se corta a mitad de la actualización; las propias notas de publicación de Debian recomiendan una pasada de actualización mínima antes de la completa.
Legible por máquina: JSON