El ritual analógico en un deporte de centésimas
La natación es un deporte obsesionado con la precisión. Medimos el tiempo en centésimas de segundo, utilizamos placas electrónicas de última generación y analizamos la biomecánica de la brazada con cámaras subacuáticas. Sin embargo, en pleno siglo XXI, la gestión de los nadadores a pie de piscina seguía anclada en los años 90.
Si has estado en una competición, conoces el escenario: calor, humedad, gritos, olor a cloro y, en medio del caos, una mesa llena de papeles. Son las listas de salida (las “series”).
El ritual es sagrado: en cuanto se imprimen las listas, el delegado o un entrenador coge un subrayador fluorescente y empieza la caza. Página tras página, busca los apellidos de los nadadores de su club para marcarlos. Es la única forma de que, visualmente, se pueda identificar rápido cuándo le toca tirarse al agua a cada uno.
El detonante: 20 minutos de frustración
La idea de Yellow o’clock no nació en una sala de reuniones ni frente a un IDE de programación. Nació en la grada de una piscina.
Ese día, la tarea recayó sobre mí. “Toma, subraya a los del equipo”, me dijeron, entregándome un taco de folios y un rotulador amarillo.
Me senté y empecé a buscar. García… no, este es de otro club. Martínez… sí, este es nuestro.
Pasaron 5 minutos.
Pasaron 10.
A los 20 minutos, seguía allí, con la vista cansada y los dedos manchados de tinta.
En ese momento, mi cerebro de desarrollador hizo “click”. Sentí esa mezcla de frustración y epifanía que todos los programadores conocemos. No tenía sentido que un ser humano estuviera haciendo una tarea de búsqueda de patrones de texto manualmente.
“Un script podría hacer esto en milisegundos. ¿Por qué lo estoy haciendo yo?”
Esa pregunta fue el comienzo de todo.
Del script “sucio” al producto real
Llegué a casa y abrí el ordenador. La primera versión no tenía interfaz bonita, ni web, ni nombre. Era simplemente un script en Python diseñado para una tarea muy específica: ingesta de PDF, reconocimiento de cadenas de texto (OCR/Text extraction) y superposición de capas de color.
Los PDFs son archivos complicados para manipular programáticamente. A diferencia de un archivo de texto plano, un PDF es más un mapa visual que una estructura de datos ordenada. El reto técnico residía en localizar las coordenadas exactas donde aparecía el nombre del club y “pintar” encima sin romper el formato original del documento.
Tras pelearme con varias librerías y coordenadas X/Y, logré que funcionara. Le pasé un PDF de 50 páginas y, en menos de un segundo, me devolvió el archivo con todos mis compañeros resaltados.
Beta Testers de lujo: CN Mediterráneo Valencia
Un software que solo usas tú es un script; un software que usan otros es un producto. Para dar ese salto, necesitaba feedback real.
Tuve la inmensa suerte de contar con la colaboración de la directiva del Club Natación Mediterráneo Valencia. Ellos se convirtieron en mis beta testers. Les entregué las primeras versiones del programa y observé.
Gracias a ellos aprendí lecciones que el código no te enseña:
- La usabilidad es clave: Nadie quiere abrir una terminal de comandos en una piscina. Necesitaban un botón, un drag & drop, algo intuitivo.
- La privacidad importa: Los clubes manejan datos de menores. Subir las listas a una nube desconocida generaba desconfianza. Por eso decidí que Yellow o’clock fuera 100% local y offline.
- La robustez: Los formatos de las actas cambian ligeramente según la federación. El algoritmo tuvo que volverse más flexible para no fallar si cambiaba la fuente o el espaciado.
Yellow o’clock hoy: Tecnología al servicio del usuario
El resultado de esas iteraciones es lo que hoy puedes ver en yellowoclock.germanmallo.com.
El proyecto se divide en dos grandes pilares tecnológicos que he querido mantener Open Source:
- El Core (Python & PDF Manipulation):
El motor de la aplicación. Utiliza algoritmos de búsqueda eficientes para escanear documentos extensos en tiempo récord.
💻 Repo: github.com/Dreiko98/pdf_remarker - La Plataforma (Next.js & Tailwind):
Para distribuir la herramienta, creé una landing page moderna, optimizada para SEO y accesible. Quería que la experiencia de descarga fuera tan fluida como la app misma. Utilicé Next.js 13 con App Router para asegurar un rendimiento máximo.
🌐 Repo: github.com/Dreiko98/yellow-o-clock-landing-page
Conclusión: Resolver problemas reales
A menudo, en el mundo del desarrollo, nos perdemos buscando la arquitectura perfecta o la tecnología de moda. Pero Yellow o’clock me recordó la esencia de nuestra profesión: crear herramientas para facilitar la vida a las personas.
Lo que empezó como una forma de ahorrarme 20 minutos de aburrimiento, ahora ahorra horas acumuladas a delegados y entrenadores, permitiéndoles centrarse en lo que realmente importa: sus nadadores.
Si eres parte del mundo de la natación, te invito a probarlo. Y si eres desarrollador, te invito a mirar el código, hacer un fork y mejorarlo.