2026
A 1B language model that writes ForoCoches threads: title, opening post and replies, in the forum’s Spanish, conditioned on a thread type and year. Gemma 3 fully fine-tuned on a full crawl of the forum (2003–2026) plus the public archive, 820k threads in all, served as a forum look-alike where generation runs in your browser over WebGPU. Model
, dataset
, crawl
, code
.
A searchable archive of public Telegram channels relevant to Spanish politics. Browse messages and channel statistics, trace forwarding sources, and explore similar posts grouped into weekly stories. The channel selection draws on published disinformation research and includes parties, media and civil-society organisations. code
.
An experiment in cataloguing A Coruña through street-level imagery from Apple, Google and Mapillary. Detects and crops shop signs, graffiti, street-name plates and other objects into a browsable map and photo grids inspired by the Bechers’ typologies. Includes text search, capture-date filters and multiple viewpoints. code
.
In 1729 and 1733 Feijoo dared his readers to find even four lines in his books translated from French journals. Using OCR and cross-language search, I found ten solid cases and two borderline ones, six of which I couldn’t find identified in earlier scholarship. The write-up is on the blog (in Spanish); materials and code and data
.
A browser instrument for designing flags, made for the album release of my friend alexoalexo
. Layers, heraldic symbols, patch-cable effects and two LFOs for animation; exports to SVG, PNG, WebM or a shareable link. code
.
music-stackOct
Self-hosted music discovery and library management, with automated tagging, manual review, and MCP tools for agents.
Full MarksOct
Experiments in getting an audio-aesthetics predictor (Audiobox Aesthetics) to give top scores to unusual sounds, by optimising waveforms, codec latents and the initial noise of a frozen generator. The scores can be pushed past the human 1–10 scale, but they collapse with small gain changes or off-grid time shifts, and a high predicted score doesn’t make the audio more enjoyable.
posthumailOct
A self-hosted dead man’s switch on Cloudflare’s free plan. Monthly check-ins by email and Telegram; if I stop answering, trusted people are asked, and once enough of them confirm, my messages are sent. It also emails the blog’s life updates to the newsletter list.
financeOct
Self-hosted personal finance on a plain-text Beancount
ledger. Daily sync of bank accounts (Enable Banking), Indexa, on-chain wallets and prices; transactions are categorized from my own history first and with a classifier only when unsure, uncertain ones go to Telegram for review. A minimal web UI for net worth, spending and portfolio, and a CLI that my agents use to answer questions and book things. Replaces my earlier beancount-ui.
trace-itSep
Winner of the HackSpain
Maisa track. Turns operating policy described in plain language into versioned, deterministic decision processes. Ingests documents in any format, proposes the rules and data sources, compiles them to tested Python, and backtests against past cases before publishing… Built with a team of five.
A public, source-backed map of data centres in peninsular Spain and their relationship to the electricity transmission grid. It keeps IT load, grid connection capacity, and installed power separate, and leaves gaps and contradictions visible. The project attracted interest from a data-centre consulting company. code and data
.
MediaLibJul
A self-hosted personal media library for music, books, movies, series, anime, manga, webtoons, and live shows. Save links through Telegram or the web UI, enrich them with provider metadata, cache artwork, track ratings and status, and migrate saved tracks to YouTube Music. Built on Cloudflare Workers, D1, and R2.
An interactive explorer of how common a seven-axis profile is among Spanish adults, built from CIS microdata. It preserves the joint distribution of responses instead of multiplying marginal percentages.
agameJun
A two-player couch game with trivia and minigames. One screen shows the board while two phones act as controllers. Runs on Cloudflare Workers with realtime Durable Objects.
A self-hosted PII and breach-data search stack. Ingests normalized leads into ClickHouse, supports tags and a small query DSL, and uses JWT or API-key authentication.
A local development tool for inspecting AWS SQS queues. Lists queues, peeks at messages without consuming them, and shows their bodies, attributes, and metadata.
A small CLI for running TRIBE v2 predictions from an input file, with checkpoint caching and CPU or CUDA support.
ee-benchApr
Explore/exploit benchmark for LLMs. Runs models through 8 environments — stationary and non-stationary bandits, grid search, combinatorial optimization — and measures cumulative regret, exploration ratio, and adaptation speed. Useful for comparing behavior across models, temperatures, and prompt framings.
AI enrichment pipeline for debt collection cases. Takes a minimal case record (name, country, debt amount) and fans out across 23 OSINT modules to produce a sourced, collector-ready dossier. Uses a wave-based async scheduler and a typed Signal system for provenance tracking.
pantry-botApr
Telegram bot for managing a shared home pantry. Add, remove, list items, and get recipe suggestions via slash commands, free-form messages, or photos of groceries or receipts. Uses an LLM for natural-language parsing.
A CLI for saving links to Linkwarden, with fzf collection selection, clipboard input, and a local collection cache.
dotfilesMar
My Omarchy desktop configuration plus the curated set of agent skills I run in Claude Code and Codex, vendored from upstream with inventory notes and an installer that links them into every agent.
i18n SkillFeb
A skill for coding agents (Claude Code, opencode…) for adding i18n translations to big codebases that originally had hardcoded strings.
2025
Competed in a tree canopy detection challenge using satellite imagery. Placed top 50 out of 4000+ participants. Explored Yolo, EOMT (DinoV3 backbone) and Mask2Former architectures. code repository
.
A search prototype for Spanish GDPR and LOPDGDD material. Uses embeddings to search legal and regulatory sources by intent rather than keywords.
SciPathBenchAug
Evaluating LLM agents on finding shortest citation paths between academic papers. Generates graphs for visualizing results and allows a human player via a web interface.
A tool to translate latex projects using LLMs, preserving structure and formatting.
Thesis project adapting the IDIR framework for 2D retinal image alignment using Implicit Neural Representations. Developed as my computer science degree thesis at UDC. Written thesis and presentation materials
available separately.
AI-powered CLI tool that merges data sources (.csv, .sql, .jsonl…) into a unified format. Automatically maps fields, infers missing headers, and rejects irrelevant information.
HackUPC25May
Competed in Spain’s biggest hackathon, where we created VuelingConnect
, a multiplatform app that creates a decentralized communications network using BLE, with a creative approach to ensure battery efficiency and avoid redundancies.
Beats19182Mar
An open source and self-hosted alternative to Offtop
. Allows for uploading, tagging and sharing beats or packs with other artists.
Escoba BenchFeb
A tool for benchmarking LLM agents by making them play Escoba
against each other, using the ELO rating system.
2024
Using gyms’ occupancy data and maps, we built a simulation that allows managers to easily visualize it and identify problems.
img-corroderOct
Image processing tool written in Rust, centered around glitch
and corruption effects. Able to create custom filter pipelines or randomized ones; also added the ability to do image segmentation from a text prompt using SAM2 and GroundingDINO
.
Placed top 25, OK for a first time; learned lots about satellite data.
mostos0Sep
Flux LoRA on Victor Moscoso’s
poster art.
Trained a model based on musicgen-small with drum breaks.
Trained a LoRA for Llama 3.1 on a dataset of Miguel Anxo Bastos’s conferences and articles.
2023
Simple Chrome extension for reducing sibilance in speech.
We released a fanzine with some of our favorite articles from our blog. Contact me if you want a copy!
Performed an audiovisual live show at the event, using reactive and artificially generated visuals that morph with the music. Most of the songs were my own productions; the visuals were made with StableDiffusion and TouchDesigner.
2026
Un modelo de lenguaje de 1B que escribe hilos de ForoCoches: título, OP y respuestas, en el castellano del foro y según el tipo de hilo y el año que le pidas. Gemma 3 con full fine-tune sobre un crawl completo del foro (2003–2026) y el archivo público, 820.000 hilos en total, servido como una réplica del foro donde la generación corre en tu navegador con WebGPU. Modelo
, dataset
, crawl
, código
.
Un archivo con buscador de canales públicos de Telegram relacionados con la política española. Permite consultar mensajes y estadísticas, rastrear el origen de los reenvíos y explorar publicaciones similares agrupadas en historias semanales. La selección parte de investigaciones publicadas sobre desinformación e incluye partidos, medios y organizaciones de la sociedad civil. código
.
Un experimento para catalogar A Coruña a partir de imágenes de calle de Apple, Google y Mapillary. Detecta y recorta rótulos de comercios, grafitis, placas de calles y otros objetos para explorarlos en un mapa y en cuadrículas de fotos inspiradas en las tipologías de los Becher. Incluye búsqueda de texto, filtros por fecha de captura y varias vistas. código
.
En 1729 y 1733 Feijoo retó a sus lectores a encontrar siquiera cuatro líneas traducidas de revistas francesas en sus libros. Con OCR y búsqueda entre idiomas encontré diez casos sólidos y dos fronterizos; para seis no encontré una identificación anterior en la bibliografía. El artículo está en el blog; materiales y código y datos
.
Un instrumento en el navegador para diseñar banderas, hecho para el lanzamiento del disco de mi amigo alexoalexo
. Capas, símbolos heráldicos, efectos conectados con cables y dos LFO para animar; exporta a SVG, PNG, WebM o un enlace para compartir. código
.
music-stackoct
Descubrimiento y gestión de una biblioteca musical autoalojada, con etiquetado automático, revisión manual y herramientas MCP para agentes.
Full Marksoct
Experimentos para que un predictor de estética de audio (Audiobox Aesthetics) dé la máxima nota a sonidos poco habituales, optimizando formas de onda, latentes de un códec y el ruido inicial de un generador congelado. Las puntuaciones se pueden llevar por encima de la escala humana de 1 a 10, pero se hunden con pequeños cambios de ganancia o desplazamientos fuera de la rejilla temporal, y una nota alta no hace que el audio guste más.
posthumailoct
Un interruptor de hombre muerto autoalojado en el plan gratuito de Cloudflare. Comprobaciones mensuales por correo y Telegram; si dejo de responder, se pregunta a personas de confianza y, cuando suficientes confirman, se envían mis mensajes. También manda por correo las actualizaciones del blog a la lista del boletín.
financeoct
Finanzas personales autoalojadas sobre un libro contable de Beancount
en texto plano. Sincronización diaria de bancos (Enable Banking), Indexa, wallets on-chain y precios; las transacciones se categorizan primero con mi propio historial y con un clasificador solo si hay dudas, y las inciertas van a Telegram para revisarlas. Una web mínima para patrimonio, gastos y cartera, y un CLI que usan mis agentes para responder preguntas y registrar movimientos. Sustituye a mi antigua beancount-ui.
Un mapa público y con fuentes de los centros de datos de la España peninsular y su relación con la red de transporte eléctrico. Separa la carga IT, la capacidad de conexión a la red y la potencia instalada, y deja a la vista los huecos y las contradicciones. El proyecto despertó el interés de una consultora especializada en centros de datos. código y datos
.
MediaLibjul
Una biblioteca multimedia personal y autoalojada para música, libros, películas, series, anime, manga, webtoons y directos. Guarda enlaces desde Telegram o la web, los enriquece con metadatos de cada proveedor, cachea las portadas, registra valoraciones y estado, y migra las canciones guardadas a YouTube Music. Hecha con Cloudflare Workers, D1 y R2.
Un explorador interactivo de lo común que es un perfil de siete ejes entre los adultos españoles, construido a partir de microdatos del CIS. Conserva la distribución conjunta de las respuestas en lugar de multiplicar porcentajes marginales.
agamejun
Un juego de sofá para dos con preguntas y minijuegos. Una pantalla muestra el tablero y dos móviles hacen de mando. Funciona sobre Cloudflare Workers con Durable Objects en tiempo real.
Un sistema autoalojado de búsqueda de datos personales y filtraciones. Ingiere registros normalizados en ClickHouse, admite etiquetas y un pequeño DSL de consultas, y usa autenticación por JWT o API key.
Una herramienta de desarrollo local para inspeccionar colas de AWS SQS. Lista las colas, ojea mensajes sin consumirlos y muestra su contenido, atributos y metadatos.
Un pequeño CLI para lanzar predicciones de TRIBE v2 desde un fichero de entrada, con caché de checkpoints y soporte para CPU o CUDA.
ee-benchabr
Benchmark de exploración/explotación para LLMs. Pone a los modelos en 8 entornos (bandits estacionarios y no estacionarios, búsqueda en rejilla, optimización combinatoria) y mide el regret acumulado, la tasa de exploración y la velocidad de adaptación. Útil para comparar el comportamiento entre modelos, temperaturas y formas de plantear el prompt.
Pipeline de enriquecimiento con IA para casos de recobro de deudas. Parte de un registro mínimo (nombre, país, importe) y lo reparte entre 23 módulos OSINT para generar un dossier con fuentes, listo para el gestor. Usa un planificador asíncrono por oleadas y un sistema tipado de Signals para rastrear la procedencia.
pantry-botabr
Bot de Telegram para gestionar una despensa compartida. Añade, quita y lista productos, y sugiere recetas mediante comandos, mensajes libres o fotos de la compra o de tickets. Usa un LLM para entender lenguaje natural.
Un CLI para guardar enlaces en Linkwarden, con selección de colección con fzf, entrada desde el portapapeles y caché local de colecciones.
dotfilesmar
Mi configuración de escritorio Omarchy más el conjunto de skills para agentes que uso en Claude Code y Codex, copiadas del original con notas de inventario y un instalador que las enlaza en cada agente.
i18n Skillfeb
Una skill para agentes de programación (Claude Code, opencode…) que añade traducciones i18n a proyectos grandes que tenían los textos escritos directamente en el código.
2025
Competí en un reto de detección de copas de árboles con imágenes de satélite. Quedé entre los 50 primeros de más de 4000 participantes. Probé las arquitecturas Yolo, EOMT (backbone DinoV3) y Mask2Former. repositorio de código
.
Un prototipo de buscador para material sobre el RGPD y la LOPDGDD. Usa embeddings para buscar en fuentes legales y normativas por intención en lugar de por palabras clave.
SciPathBenchago
Evalúa agentes LLM buscando el camino de citas más corto entre artículos académicos. Genera gráficos para visualizar los resultados y permite jugar a personas desde una interfaz web.
Una herramienta para traducir proyectos LaTeX con LLMs, manteniendo la estructura y el formato.
Proyecto que adapta el framework IDIR para alinear imágenes de retina 2D con Representaciones Neuronales Implícitas. Fue mi TFG de Ingeniería Informática en la UDC. La memoria y la presentación
están aparte.
CLI con IA que une fuentes de datos (.csv, .sql, .jsonl…) en un formato unificado. Mapea campos automáticamente, deduce cabeceras que faltan y descarta información irrelevante.
HackUPC25may
Competimos en el mayor hackathon de España, donde creamos VuelingConnect
, una app multiplataforma que monta una red de comunicaciones descentralizada con BLE, con un enfoque creativo para ahorrar batería y evitar redundancias.
Beats19182mar
Una alternativa open source y autoalojada a Offtop
. Permite subir, etiquetar y compartir beats o packs con otros artistas.
HackUDC25feb
Escoba Benchfeb
Una herramienta para evaluar agentes LLM haciéndolos jugar a la escoba
entre ellos, con un sistema de puntuación ELO.
2024
Con datos de ocupación y planos de gimnasios, construimos una simulación que permite a los gestores visualizarla fácilmente e identificar problemas.
img-corroderoct
Herramienta de procesado de imagen escrita en Rust, centrada en efectos de glitch
y corrupción. Permite crear cadenas de filtros personalizadas o aleatorias, y también segmentar imágenes a partir de un prompt de texto con SAM2 y GroundingDINO
.
Quedamos en el top 25, no está mal para ser la primera vez; aprendimos mucho sobre datos de satélite.
mostos0sept
LoRA de Flux sobre los carteles de Victor Moscoso
.
all-the-breakssept
Entrené un modelo basado en musicgen-small con breaks de batería.
Entrené una LoRA para Llama 3.1 con un dataset de conferencias y artículos de Miguel Anxo Bastos.
2023
Extensión sencilla de Chrome para reducir la sibilancia en la voz.
Sacamos un fanzine con algunos de nuestros artículos favoritos del blog. ¡Escríbeme si quieres uno!
Hice un directo audiovisual en el evento, con visuales reactivos y generados artificialmente que se transforman con la música. La mayoría de la música eran producciones mías; los visuales los hice con StableDiffusion y TouchDesigner.








