El dato escrito a mano
The hand-written value
Una tarea de mi plugin de Moodle dejó de generar los justificantes de asistencia a examen, con un críptico «no se ha proporcionado ningún documento» y reintentos sin fin. Lo curioso: no fallaban todos, solo los alumnos nuevos. La universidad había cambiado de directorio sin avisarme y había dejado de dar de alta a los nuevos en el antiguo, al que mi código seguía preguntando (y que seguía respondiendo, por eso no saltaba ninguna alarma). Era fin de semana y no tenía las credenciales del directorio nuevo… hasta que caí en que Moodle ya tenía esa conexión configurada y funcionando. La lección va más allá de Moodle: cuando el sistema ya tiene algo configurado, reutilízalo en vez de duplicarlo. Una sola fuente de verdad.
A scheduled task in my Moodle plugin stopped generating exam attendance slips, with a cryptic «no document provided» and endless retries. The odd part: not all of them failed, only the new students. The university had switched directories without telling me and had stopped adding new students to the old one, which my code kept querying (and which still answered, so no alarm went off). It was the weekend and I did not have the new connection details… until I realized Moodle already had that connection configured and working. The lesson goes beyond Moodle: when the system already has something configured, reuse it instead of duplicating it. A single source of truth.
Generado por un agente de IA · Generated by an AI agent · Colophon
TranscripciónTranscript · del guión del episodio· from the episode script
Llevo unos cuantos días sin publicar nada por aquí. Y no es por falta de ganas, es por exceso de todo lo demás.
Es temporada de exámenes finales en la universidad, que ya de por sí lo revuelve todo. A la vez ando preparando la actualización de Moodle para el curso que viene, el salto a la 5.2. Y, de paso, una migración del Moodle entero a otro servidor. Y los ratos que saco, los dedico a una app que estoy haciendo en Swift, probando por dentro la inteligencia artificial de Apple. Vamos, que estoy metido en más cosas de las que caben en un día.
Pero este fin de semana me topé con un problema pequeño, de esos que parecen una tontería, y que al final daban para una buena historia. Así que aquí estoy.
Bienvenido a un nuevo episodio del podcast de Sergio.
Tengo un plugin propio para Moodle. Su trabajo es sencillo: antes de que un alumno pueda hacer un examen online, tiene que aceptar un código de honor, un compromiso de hacerlo con honestidad. Si no lo acepta, no ve el examen. Sin compromiso, no hay examen.
Y sobre eso monté un extra: cuando el alumno acepta ese código, automáticamente le genero un justificante de asistencia al examen y se lo mando por correo.
Pues ese justificante, un día, dejó de salir. Sin ruido. Sin un error rojo en pantalla. La tarea que lo genera simplemente terminaba diciendo, en un rincón del log, que no se había proporcionado ningún documento, y se quedaba reintentando una y otra vez. Nada explotaba. Solo que los justificantes no llegaban.
Aquí hay un detalle importante. Para rellenar ese justificante necesito el número de documento del alumno, su DNI. Y ese dato no está en Moodle: vive en el directorio de la universidad, el sistema central donde están todas las personas. Así que mi tarea, para conseguir el DNI, salía a preguntarle a ese directorio.
Mi primera reacción fue pensar que se había roto del todo, que fallaban todos los justificantes. Pero me dio por revisar el historial de la tarea con calma. Y resulta que no: algunos sí salían. Unos alumnos recibían su justificante tan tranquilos, y otros no.
Y eso, depurando, es oro. Porque un fallo que afecta a todos suele ser algo roto. Pero un fallo que afecta solo a algunos esconde un patrón. Solo hay que encontrarlo. Y el patrón, cuando lo vi, cantaba: los que fallaban eran los alumnos nuevos. Los recién llegados.
¿Qué había pasado? Que la universidad había cambiado de directorio. Sin avisarme. Y, además, habían dejado de dar de alta a los alumnos nuevos en el antiguo, que era justo al que mi tarea seguía preguntando. Los de siempre seguían ahí, por eso a ellos les funcionaba. Los nuevos, sencillamente, no aparecían.
Y aquí está lo más traicionero. El directorio antiguo no estaba apagado. Seguía respondiendo. Cuando mi código le preguntaba, contestaba educadamente que no tenía a esa persona. Sin errores, sin caídas. Por eso no saltaba ninguna alarma. Era como preguntarle a la guía de teléfonos del año pasado: la guía responde, solo que ya no tiene los números nuevos.
Para arreglarlo tenía que apuntar mi plugin al directorio nuevo. Y para eso necesitaba los datos de la nueva conexión: servidor, cuenta, contraseña. Que me los tenía que dar la gente de sistemas. Y era fin de semana. Hasta el lunes, nada.
Y lo reconozco: yo soy de los que, cuando hay un problema delante, no desconecta hasta resolverlo, sea sábado o sea la hora que sea. Medio en broma digo que, para trabajar conmigo, hay que estar dispuesto a estar al cien por cien todos los días… empezando por mí mismo. No sé si es muy sano, pero es como funciono.
Así que, esperar al lunes, poco. Y entonces me di cuenta de una cosa: Moodle ya hablaba con el directorio nuevo. Lo hace cada vez que alguien inicia sesión. Tenía esa conexión configurada y funcionando, ahí al lado. ¿Para qué iba a pedir unas credenciales que la propia plataforma ya tenía guardadas?
Así que, en lugar de montarme otra vez mi conexión, le dije a mi código que reutilizara la de Moodle. Y ojo, que no era estrictamente necesario para arreglar el fallo: con apuntar al sitio correcto habría bastado. Pero ya que estaba dentro, y ya que me había dado cuenta, mejor hacerlo bien. No hay mal que por bien no venga. Mi tarea dejó de tener datos de conexión propios: el servidor, la cuenta, la contraseña… todo sale ahora de un único sitio, la configuración de Moodle. Lo dejé resuelto el sábado, sin llamar a nadie, sin esperar al lunes.
Y la lección que me llevo va más allá de Moodle. Cuando el sistema sobre el que trabajas ya tiene algo configurado y funcionando, antes de montarte tu propia versión al lado, plantéate reutilizar la que ya hay. Una sola fuente de verdad. Porque el día que cambie el servidor, o la contraseña, o, como aquí, el directorio entero, se cambia en un sitio y listo. De hecho, si yo hubiera tirado de la conexión de Moodle desde el principio, este cambio de directorio ni me habría afectado: mi tarea habría ido al nuevo ella sola, sin enterarme. Sin justificantes perdidos, sin investigación de fin de semana.
Y con eso te quiero dejar. La próxima vez que algo ya esté configurado y funcionando en tu sistema, antes de montarte tu propia versión, pregúntate si no puedes, simplemente, reutilizar la que ya hay.
Nos escuchamos en el próximo.