Hace unos días resucité un proyecto que comencé hace más de dos años 1. Estaba haciendo un muebleciro y no encontraba unas bisagras que sabía que en algun lado tenía hasta que claudique en búsqueda y las volví a comprar. Cuando volví dejé las baterias del taladro cargando y me fui a promptear: "Retomá este proyecto porque lo sigo necesitando " .
El proyecto se llama Quilombo y es algo así como un agentic inventory management system, una memoria para que tu agente de IA pueda entender y recordar el mundo físico que te rodea y ayudarte a encontrar cosas en él.
En El termo, un cuento que publiqué en mi otro blog, decía:
Mi viejo lleva el termo en las manos. Lo quiero, lo deseo, pero no lo necesito en absoluto. Siento un placer que acepto tonto en encontrar cosas o recuperarlas. Claro que me resulta más tranquilizador y satisfactorio cuando es evidente que fue un despojo deliberado, como esa vez que recogí dos valijas impecables (sólo debí cambiarles una rueda) en una vereda de Oxford. La ecología que abrazamos los ratas: gustar de las mercancías sin tener que pagarlas; consumir, pero si son sobras en oferta; capitalismo, pero sólo la puntita porque duele. Podría pedir el termo ahora mismo desde el celular y el señor Bezos en persona me lo llevaría en su camioncito Prime mañana a primera hora, pero no tendría gracia alguna. Y cuántos litros de combustible que ha de gastar ese hombre, ¿cierto?
Soy esa especie de frigano tercermundista con particular enconno con las corpo, cuyos productos igual usufructo. Pero me resisto a darles un mango de más.
En varios equipos aparece tarde o temprano el mismo problema: la documentación técnica está repartida entre repositorios distintos, pero el destino natural para publicarla es un solo sitio coherente.
Un proyecto central puede tener su propia documentación de desarrollo, pero además depender de guías operativas, manuales de infraestructura o documentación de integraciones que viven en otros repositorios y muchas veces son mantenidas por diferentes equipos.
La pregunta es cómo publicar todo eso junto, con coherencia y navegabilidad, sin obligar a centralizar también las fuentes.
La idea que estuvimos implementando estos días en Fierro es bastante simple: un único sitio publicado, construido con sphinx desde un repositorio principal, pero a partir de fuentes mantenidas en varios repos.
Lobsters (lobste.rs) es probablemente mi fuente principal1 de lecturas técnicas: es una curación hecha por humanos que prioriza la calidad de los contenidos, sin clickbaiting ladino, publicidad abusiva o comentarios hostiles. Si bien no soy miembro (requiere una invitación), comulgo fuertemente con su espíritu de la "vieja internet".
Ayer, mayormente desde ChatGPT en el teléfono, hice Lobstersgram, un bot que funciona como un cliente rápido de lobste.rs en Telegram.
Cada cierto tiempo, si el bot detecta que hay artículos nuevos publicados en el sitio, te manda un mensajito con una intro y un link del artículo copiado a telegra.ph, además del link a la fuente original y al hilo de discusión en el foro. ¿Por qué republicar en telegraph? Porque soporta el modo instant view, que permite precargar el contenido con un estilo simple y unificado, ideal para leer desde el móvil.
Python, como el lenguaje pragmático que es, no exige mucho para empezar. Un archivo de texto con código válido, que por convención lleva la extensión .py y constituye un "módulo" en la jerga pythónica, ya es un pequeño programa (un script); lo ejecutamos con python <archivo> y a cobrar. Pero cuando esa simple pieza de código necesita crecer a más archivos o merece ser distribuida, quizás porque será dependencia de otro proyecto o simplemente porque consideramos que a alguien le servirá, entonces necesita algo de estructura y metadatos.
Esto no es algo exclusivo de Python: cuando se comienza un proyecto de software siempre hay una serie de archivos y estructuras básicas que sirven como punto de partida; el conjunto mínimo de archivos y carpetas, configuraciones y código "básico" que se necesita cuando se desea compartir el código como una aplicación o biblioteca: el boilerplate de un proyecto. El boilerplate no define lógica, pero sí establece la base técnica, muchas veces basada en convenciones y otras en gustos personales, sobre la cual se construirá todo lo demás.
Este artículo detalla las decisiones que hice para la plantilla e inicialización automatizada (el "bootstrapping") que uso para mis proyectos, basada en la herramienta Copier.