Ingeniería para la vida diaria

1. El origen del problema: demasiadas fuentes, demasiada fricción

Durante años tuve una sensación persistente: mi presencia online estaba desordenada.
No porque le faltara contenido, sino porque cada plataforma contenía una parte de mí, sin sincronización entre ellas.

Era una arquitectura humana defectuosa. Un sistema en el que yo era el ETL manual: leer, copiar, actualizar, sincronizar, volver a revisar.

Lo que en infraestructura se conoce como falta de fuente de verdad.

Lo que en productividad se conoce como fricción.

Lo que en la práctica significa: desactualización crónica.

El cambio sucedió cuando me pregunté lo que cualquier ingeniero se preguntaría:

¿Por qué estoy haciendo tareas repetitivas que una computadora puede hacer mejor que yo?

2. La idea: tratar mis datos personales como un producto

La solución no fue escribir un script. Fue diseñar un pipeline completo, con las mismas reglas que aplicaría en una empresa:

Nació así el proyecto que hoy rige mi ecosistema digital: personal-tracker, un sistema autónomo de RPA personal que captura, versiona y distribuye mis datos.

Y sobre él, un builder estático que convierte esos datos en contenido para mi sitio Jekyll.

El objetivo no era la automatización por la automatización misma. Era sacar la edición manual del circuito. Hacer que mi vida digital se exprese sola sin perder tiempo en mantener mi presencia digital.

3. Diseño conceptual: un mini data‑lake doméstico

Entendí rápidamente que mis datos estaban distribuidos en múltiples plataformas, pero que todas compartían un patrón:

La idea entonces fue construir algo parecido a un data‑lake personal, pero extremadamente minimalista.

Este modelo tenía dos beneficios inmediatos:

  1. Separación total entre datos y presentación.
    La web no es donde creo contenido: es donde el contenido se refleja.

  2. Independencia absoluta de plataformas externas.
    Aunque cambien APIs o políticas, yo siempre conservo un historial propio.

4. La Raspberry Pi como servidor personal 24/7

Elegir la Raspberry Pi no fue casual. Necesitaba:

La Pi cumple con todo:

5. Arquitectura del proyecto personal-tracker: ingeniería para la vida diaria

personal-tracker es un proyecto escrito como si fuera un microservicio productivo, con responsabilidades claras y aislamiento entre capas.

5.1 FHS: jerarquía estricta

/opt/personal-track      → código del sistema
/etc/personal-track      → configuración + cookies + tokens
/var/lib/personal-track  → datos persistentes (JSON versionados)
/var/log/personal-track  → logs, errores, auditoría

Esta estructura impone disciplina:

5.2 El patrón BaseScraper: Template Method

Todos los scrapers heredan de un objeto base que define:

Cada scraper solo implementa la parte específica del “cómo obtener los datos”.

Es exactamente la misma idea que se usa en empresas para homogenizar scrapers o workers heterogéneos.

5.3 Versionado diario de datos

Cada salida produce un archivo con timestamp:

goodreads_2025-12-03.json
coursera_2025-12-03.json
github_2025-12-03.json

Esto me permite:

5.4 Resiliencia por diseño

Hacer scraping es una práctica frágil. Cookies expiran, selectores cambian, APIs rate-limitan.

Mi solución fue diseñar para la imperfección:

La filosofía es simple: prefiero información incompleta antes que un pipeline caído.

6. El segundo componente: el builder de Jekyll

Una vez recolectados los datos, otro timer systemd en la Raspberry Pi ejecuta un script de build que transforma los JSON en:

El builder siempre toma el último JSON disponible por prefijo. Si no hay datos nuevos una noche, la web igual se construye.

6.1 Artefactos generados

YAML

Markdown

Metadatos

Es un sistema declarativo: el sitio es un reflejo, no un origen.

7. El flujo diario: del mundo real a la web

El pipeline completo es este:

00:00  Tracker → Scraping de todas las fuentes → JSON diario
00:05  Builder → Normalización → YAML/MD → Git commit/push
00:06  GitHub Pages / Actions → Despliegue del sitio

El proceso completo, desde el mundo real hasta la web final, sucede sin intervención humana.

8. ¿Qué cambió en la práctica?

Este sistema reformuló completamente cómo administro mi presencia online.

  1. crear un scraper heredado,
  2. guardar su JSON en /var/lib/personal-track,
  3. ajustar el builder si corresponde.

9. Casos reales: cómo se siente usar el sistema

El sistema trabaja para mí.

10. Cómo replicarlo: guía técnica resumida

  1. Definir fuentes de verdad.
  2. Construir un scraper por fuente (idealmente con BaseScraper).
  3. Respetar FHS para separar código, datos y secretos.
  4. Versionar salidas en /var/lib.
  5. Crear un builder que genere YAML/MD.
  6. Automatizar con timers systemd.
  7. Desplegar con GitHub Pages o similar.
  8. Proteger cookies y tokens en /etc.
  9. Nunca editar Jekyll manualmente.

11. Reflexión final: automatizarse para recuperar tiempo

Este proyecto empezó como un intento por evitar la fricción de actualizar mi CV, pero terminó siendo algo distinto: un sistema de RPA personal, una infraestructura mínima pero poderosa que documenta mi vida diaria sin pedirme atención.

Y en ese proceso descubrí algo interesante:

Automatizar no es delegar tareas.
Automatizar es rediseñar la relación entre uno mismo y sus herramientas.

Mi sitio ya no es algo que “tengo que mantener”. Es simplemente la proyección organizada de lo que hago todos los días.

Y eso —para mí— fue liberador.