20261007 #12 — Nada funcionaba y nada lo decía

Llevé el sistema a una segunda máquina y nada funcionaba ni avisaba: la causa era una flecha que Windows no sabía imprimir. La sincronización que armé esa noche duró diecisiete minutos.

Hoy el registro de sesiones del proyecto coordinador tiene, para el sábado 3 de octubre, cuatro sesiones numeradas en el rango de la Mac y cuatro en el de Windows sin chocar. Esa convivencia la armé esa noche, después de descubrir que en Windows nada funcionaba y nada lo decía.

Una flecha en Windows

Los repos estaban, pero el toolkit asumía la Mac: rutas con su usuario, un módulo de bloqueo de archivos (fcntl) que solo existe en Unix, python3 y bash a mano. Instalé con winget Python 3.12 y Git for Windows; sumé un python3.exe por el atajo de la Microsoft Store. Aun así los hooks no daban error: no hacían nada.

Una codificación de caracteres es la tabla que traduce cada letra o símbolo a bytes. Si el programa escribe un símbolo que la tabla de esa máquina no tiene, la escritura falla, y si nadie mira esa falla, el programa simplemente no hace nada. Windows imprime con cp1252, que no tiene la flecha →, y mis hooks la usaban. El arreglo fue una variable de entorno, PYTHONUTF8=1, que hoy sigue en mi configuración global.

20:37

La sesión de esa noche cerró a las 20:37. Dejó la misma estructura de carpetas en las dos máquinas (15 repos movidos), un rango de numeración por máquina, V01-V49 para la Mac y V51-V99 para Windows, guardado en un archivo local por máquina. El índice de sesiones tenía 250 filas para 126 archivos; en vez de regenerarlo, dejé que git una las dos versiones línea por línea con merge=union. La sincronización iba por git sobre 17 repos sueltos. Elegí replicar la estructura porque dejaba la Mac sin cambios.

20:54

A las 20:54, diecisiete minutos después, arrancó otra sesión para cambiar eso. Con las dos máquinas trabajando a la vez, 17 repos sueltos significaban que el arranque de sesión solo traía la configuración y el proyecto abierto, que cada cierre pedía dos commits y dos push, y que hacían falta unos 30 tokens de acceso. La respuesta fue un monorepo: 11 proyectos adentro, 4 productos con repo propio porque pueden compartirse o desplegarse aparte, y la configuración aparte.

21:54 y 22:24

A las 21:54 salió el primer commit desde Windows en el monorepo; a las 22:24, el primero desde la Mac. Lo que duró diecisiete minutos fue la capa de sincronización, no la decisión entera: la segunda decisión complementa a la primera. Siguen vigentes los rangos de numeración, PYTHONUTF8=1 y las rutas relativas al directorio del usuario, y con ellas las dos máquinas escriben el mismo registro sin pisarse.

No digo que desde entonces todo ande perfecto en las dos. Digo que la primera falla de esa noche no tenía mensaje. La próxima vez que algo "no haga nada" en una máquina nueva, ¿vas a buscar el error o a preguntarte qué falla está callada?

Comentarios

  • Cargando comentarios…

Suscribirse

Dejá tu mail y te aviso cuando publique algo nuevo.

Qué hacemos con tu email

Te vamos a mandar un email cuando publique algo nuevo. Podés darte de baja cuando quieras desde el link que incluye cada envío. Más detalle en privacidad.