Colophon
Cómo está hecha esta web
How this site is built
Servidor
Server
Hardware
Hardware
Mac mini M4 — en casa, 24/7
Web server
Apache con virtual hostswith virtual hosts
DNS / CDN
Cloudflare
OS
macOS
Stack
Stack
Portada y tools
Home & tools
HTML, CSS y JavaScript — sin frameworks, sin build step
HTML, CSS and JavaScript — no frameworks, no build step
Blog
Hugo 0.153 + tema propiocustom theme
Publicación
Publishing
Git
post-commit hook — commit y listo
Git post-commit hook — commit and done
Backend (tools)
Backend (tools)
PHP
Base de datos
Database
PostgreSQL
Analytics
Propia, en unas pocas líneas de PHP: un beacon sin cookies que escribe a ficheros, sin identificar a nadie. Los datos no salen del Mac mini y alimentan el estado y el parte diarioHome-made, a few lines of PHP: a cookie-less beacon writing to files, identifying nobody. The data never leaves the Mac mini and feeds the status page and the daily report
Email
msmtp + iCloud
Podcast
Podcast
Generación de voz
Voice generation
xAI TTS — voz de catálogo
leo, castellano (es-ES), desde el siguiente episodio · antes, ElevenLabs: mi voz clonada (Ep. 21–23) y Guillermo (Ep. 1–20)
xAI TTS — off-the-shelf voice leo, European Spanish (es-ES), from the next episode · previously ElevenLabs: my cloned voice (Ep. 21–23) and Guillermo (Ep. 1–20)
Cómo se hace
How it's made
Generado con un agente de IA — busca el tema, escribe el guión y sintetiza la voz; se publica tras mi revisión, escuchando el episodio completo
Generated with an AI agent — finds the topic, writes the script and synthesises the voice; published after my review, listening to the full episode
Validación
Validation
Cada bloque se transcribe con Whisper en local y se compara palabra por palabra con el guión: los TTS se saltan frases enteras y de oído no se detecta
Every block is transcribed locally with Whisper and compared word by word against the script: TTS engines skip whole sentences and you can't catch it by ear
Formato
MP3 · 128kbps · normalizado a −16 LUFS (
loudnorm en dos pasadas)
MP3 · 128kbps · normalised to −16 LUFS (two-pass loudnorm)
Vídeo
Video
Versión en vídeo generada con
ffmpeg + Pillow (portada animada, ondas y subtítulos desde la transcripción) y subida a YouTube, declarada como contenido sintético
Video version built with ffmpeg + Pillow (animated cover, waveform and subtitles from the transcript) and uploaded to YouTube, declared as synthetic content
IA local
Local AI
Dónde corre
Where it runs
En el mismo Mac mini que sirve esta página, con Ollama. Nada sale a ninguna API: se arranca solo mientras genera y se para al terminar, porque la máquina también sostiene un Moodle y un Jitsi
On the same Mac mini that serves this page, with Ollama. Nothing leaves for an external API: it starts only while generating and stops right after, because the machine also runs a Moodle and a Jitsi
Modelos
Models
mistral:7b para redactar · nomic-embed-text para los embeddings · qwen3:4b de reserva cuando hace falta razonar
mistral:7b for writing · nomic-embed-text for embeddings · qwen3:4b in reserve when reasoning is needed
En la web
On this site
El mapa del blog y el «quizá te interese» de cada artículo salen de embeddings calculados aquí. Se precalculan al publicar: en la petición no corre ninguna IA
The blog map and the "you might also like" on every post come from embeddings computed here. They're precomputed at publish time: no AI runs during the request
Fuera de la web
Off-site
Un parte diario del servidor a las 08:00 y un triaje semanal de los sondeos que recibe, ambos por Telegram
A daily server report at 08:00 and a weekly triage of the probes it receives, both over Telegram
La regla
The rule
El código es dueño de los hechos y el modelo del criterio: todas las cifras las calcula un programa, y el modelo tiene prohibido escribir números. Empezó inventándose datos con mucho aplomo, así que ahora hay un validador que lo comprueba cada día
Code owns the facts, the model owns the judgement: every figure is computed by a program, and the model is forbidden from writing numbers. It started making up data with total confidence, so now a validator checks it every day
Esta web no usa frameworks de JavaScript, no tiene sistema de build, no tiene dependencias de npm y no necesita un servidor de CI/CD para publicar un cambio. Un commit lo pone en producción en segundos. A veces la solución más simple es la mejor.
This site uses no JavaScript frameworks, has no build system, no npm dependencies, and doesn't need a CI/CD pipeline to publish a change. A commit puts it in production in seconds. Sometimes the simplest solution is the best one.