Saltar al contenido
PodcastsTecnologíaAtareao con Linux

Atareao con Linux

atareao
Atareao con Linux
Último episodio

838 episodios

  • Atareao con Linux

    ATA 838 Deja de escribir Python, doma YAML y JSON con yq y jq

    08/10/2026 | 26 min
    Los metadatos de tus notas son puro oro, y me da la sensación de que todavía no lo sabes. Tienes títulos, fechas de creación, etiquetas... toda esa información del front matter de cada Markdown que, la mayoría de las veces, se queda ahí muerta de risa sin que le saques partido. En los episodios 819 y 821 te conté cómo la extraía con Python para montar un grafo de conocimiento. Funcionaba, pero para cualquier consulta rápida tenías que abrir el script, tocar el código y volver a ejecutarlo. Eso no es ágil.
    En este episodio te presento al dúo dinámico: jq y yq. Dos herramientas que hacen una sola cosa y la hacen de maravilla, esa vieja filosofía UNIX que tanto nos gusta. jq es el procesador de JSON de referencia desde 2012, escrito en C y presente en casi todas las distribuciones. yq es el mismo concepto para YAML, XML, INI, TOML y CSV, escrito en Go por Mike Farah y distribuido como un binario único sin dependencias. Con las dos, y sin escribir ni una línea de Python, vas a extraer, filtrar y conectar los metadatos de tus notas.
    Arrancamos con lo básico de jq, sus filtros y sus cuatro funciones estrella, select, unique, map y group_by. Son las que vas a reutilizar una y otra vez. Después pasamos a yq y a su joya de la corona, el soporte nativo de front matter. Con una línea tipo yq --front-matter=extract '.tags' nota.md sacas las etiquetas de una nota, y con -i la editas in place, algo que jq no permite. Actualizar la fecha de modificación, añadir un tag nuevo o convertir de YAML a JSON y al revés sin salir de la terminal.
    Y luego llega la parte divertida, los pipelines. Encadenando fd, yq y jq consigues una lista limpia de los tags de tu vault, un informe con cuántos documentos usan cada etiqueta o el grafo de conocimiento completo en JSON, con nodos y aristas, sin Python y sin IA. También te enseño a detectar esas notas viudas que no tienen etiqueta y a cerrar el círculo pasando ese JSON a un modelo local con Ollama, para que te clasifique las notas y te diga qué conexiones hay entre ellas.
    Terminamos con los errores más habituales, que ya me he encontrado de todo. Que yq solo procesa el primer documento si le pasas varios ficheros, que un front matter sin los delimitadores --- no lo reconoce nadie, o que jq no tiene edición in place. Pequeños tropiezos que te ahorro para que no pierdas media tarde peleándote con la terminal.
    Si tienes un vault de notas, aunque sean solo diez archivos, este episodio te va a cambiar la forma de trabajar con ellos. Y si te gusta domar tus datos con herramientas pequeñas y afiladas, más todavía. Suscríbete al podcast, déjame una valoración y compártelo con quien todavía escriba un script de Python para leer un YAML. La semana que viene, en el 839, seguimos con el grafo de conocimiento y la IA local.
    Capítulos:
    0:00 - Introducción: yq y jq, el dúo dinámico
    3:15 - Filosofía UNIX: domar datos sin escribir Python
    5:45 - Qué es jq y qué es yq
    8:00 - Filtros básicos con jq
    10:45 - Funciones clave de jq: select, unique, map y group_by
    13:15 - yq y Front Matter: extraer metadatos
    16:00 - Edición in-place y conversión YAML ↔ JSON
    18:30 - Pipelines: fd + yq + jq para extraer tags
    21:00 - Del Front Matter al grafo de conocimiento
    22:45 - Notas viudas y pipeline con IA local
    24:30 - Errores comunes, conclusiones y despedida
    Encontrarás todos los comandos y las notas del episodio en atareao.es, y si quieres participar en la comunidad, tenemos el grupo de Telegram en t.me/atareao_con_linux, además de la red de podcast Sospechosos Habituales en feedpress.me/sospechososhabituales. Un saludo y nos escuchamos el próximo lunes 🐧
    Más información y enlaces en las notas del episodio
    🌐 Aquí lo puedes encontrar todo 👉 https://atareao.es
    ✈️ Telegram (el grupo) 👉 https://t.me/atareao_con_linux
    ✈️ Telegram (el canal) 👉 https://t.me/canal_atareao
    🦣 Mastodon 👉 https://mastodon.social/@atareao
    🐦 Twitter 👉 https://twitter.com/atareao
    🐙 GitHub 👉 https://github.com/atareao
  • Atareao con Linux

    ATA 837 Conecta tus notas con IA, el fin de las búsquedas que fallan

    05/10/2026 | 32 min
    Hay algo que me pasa desde hace años y que seguro que a ti también te suena. Voy tomando notas en Markdown, las organizo por temas y por proyectos, les pongo etiquetas, y en mi cabeza todo tiene sentido. Hasta que un día busco algo con grep y no aparece. No es que la nota no exista, es que mi yo del pasado usó otras palabras y la búsqueda clásica no compara significados, compara letras. Tienes el conocimiento, pero no tienes el mapa.
    En este episodio te hablo de GraphRAG, esa evolución del RAG que une vectores y grafos de conocimiento para que tus notas dejen de ser ficheros aislados. Primero te cuento por qué la búsqueda literal falla justo cuando tu cerebro digital crece, con esos tres ejemplos de siempre. Buscas particiones y la nota se llama Redimensionar LVM. Buscas monitorización de red y tienes guardadas ntopng e iftop. Buscas alta disponibilidad y aparecen keepalived, Nginx y certificados sin que se vean como un mismo sistema.
    Después repasamos los tres límites del RAG clásico. El fragmento pierde el contexto, no entiende relaciones y no tiene visión global. Y ahí entran los grafos, con sus nodos, sus aristas y sus pesos, que no escribes a mano, sino que genera el sistema leyendo tus propios .md. Con la idea de fondo bien clara: los vectores te dicen a qué se parece algo, el grafo te dice cómo se conecta.
    Luego lo ves funcionar de verdad, con un único binario en Rust, SQLite embebido y Ollama para los embeddings y el reconocimiento de entidades. Todo local, sin Python ni contenedores, y lo puedes llevar en un pendrive. Te enseño cómo se crea el grafo, cómo se exploran las estadísticas, la diferencia entre la búsqueda semántica y la literal, cómo se trazan rutas entre dos conceptos que nunca aparecen juntos en una nota, el mapa en la terminal y la integración con Neovim para que te sugiera notas relacionadas mientras escribes.
    De fondo hay toda una familia de soluciones. Microsoft GraphRAG formalizó la idea con su pipeline de comunidades, LightRAG la hizo más ligera e incremental, y aquí tienes una versión utilitaria, personal y offline que cabe en un único binario. No es un clon de nada, es la misma idea llevada a mi terreno.
    Un aviso honesto, porque me gusta contar las cosas como son. Sin Ollama no hay magia, la búsqueda vectorial necesita el modelo vivo. Es el precio de tenerlo todo en casa y bajo tu control, que para mí vale la pena.
    Esto es solo la primera parte de una serie. Hoy entendemos qué es GraphRAG, en el episodio 839 construimos el grafo con tus notas y en el 841 aprendemos a interrogarle. Si llevas tiempo tomando notas y sientes que tu buscador te falla, este episodio es para ti.
    Capítulos:
    0:00 - Introducción: notas, Zettelkasten y el cerebro digital
    3:56 - Por qué la búsqueda clásica (grep) falla
    7:05 - Qué es GraphRAG: embeddings y vectores
    10:45 - Los tres límites del RAG clásico
    13:40 - Grafos de conocimiento: nodos, aristas y pesos
    17:50 - La herramienta en Rust con Ollama
    20:20 - Demo: crear el grafo y explorar estadísticas en SQLite
    23:00 - Búsqueda semántica (search) frente a búsqueda literal (FTS)
    25:40 - Rutas y relaciones: path y graph
    28:10 - El mapa en la terminal (TUI)
    29:40 - Conclusiones y cierre

    Más información y enlaces en las notas del episodio
    🌐 Aquí lo puedes encontrar todo 👉 https://atareao.es
    ✈️ Telegram (el grupo) 👉 https://t.me/atareao_con_linux
    ✈️ Telegram (el canal) 👉 https://t.me/canal_atareao
    🦣 Mastodon 👉 https://mastodon.social/@atareao
    🐦 Twitter 👉 https://twitter.com/atareao
    🐙 GitHub 👉 https://github.com/atareao
  • Atareao con Linux

    ATA 836 Adiós a los bots. Blinda tu VPS con un WAF casero

    01/10/2026 | 23 min
    Si tienes un VPS con los puertos 80 y 443 abiertos, este episodio te interesa. Cada día, bots de todas partes del mundo escanean tu servidor buscando una rendija por la que colarse. La solución no es cerrar las puertas, sino poner un portero que sepa quién entra y quién se queda fuera. Ese portero se llama Shuul, y es el WAF casero del que te hablo en este episodio.
    Las cifras hablan solas. En las últimas 24 horas, mi VPS recibió 921.000 peticiones. De ellas, bloqueé 650.000. Eso es un 70% de tráfico no deseado. Y no solo hablo de bots escaneando puertos, también de intentos de acceso a rutas de WordPress, phpMyAdmin y vulnerabilidades conocidas. Shuul se encarga de filtrar todo eso antes de que llegue a tus servicios.
    En el episodio te cuento cómo funciona Shuul por dentro. Tiene dos pipelines independientes. El primero es el WAF, que actúa como forward auth de Traefik: cuando llega una petición, Traefik le pregunta a Shuul si la deja pasar. Aquí se evalúan reglas por IP, país, user-agent, URI y método HTTP, con pesos para decidir si se permite o se deniega. El segundo pipeline es el Jail, un sistema de rate limiting que actúa después de que el backend responde: si alguien acumula demasiados 401, 403 o 404, se le banea la IP con ventanas deslizantes y tiempos de ban que escalan.
    La arquitectura es ligera. Backend en Rust con Axum, frontend en React con TypeScript y shadcn/ui, y un pequeño plugin en Go que hace de reportero para Traefik. Todo montado en Docker con un binario estático de unos 20 megas. La base de datos es SQLite — no necesitas PostgreSQL para esto. La autenticación del panel la hago con OIDC a través de PocketID, nada de usuario y contraseña tradicionales.
    También te explico por qué descarté fail2ban. No me gusta porque es un proceso en Python que parsea logs. Shuul obtiene los datos directamente de Traefik, sin escrituras a disco, y trabaja a nivel HTTP, no a nivel de firewall de red. Además puedes crear reglas muy granulares: desde permitir una URL concreta para todo el mundo mientras bloqueas por país en el resto, hasta templates preconfigurados para SQL injection, escáneres de directorios o protección contra vulnerabilidades web.
    Y todo esto acompañado de un dashboard con gráficos en tiempo real, rankings por países bloqueados y logs en directo. Vamos, que no le falta detalle.
    Si tienes un servidor en casa o un VPS y estás harto de los bots, este episodio te va a venir como anillo al dedo. Shuul es código abierto, está en GitHub, y lo puedes desplegar en minutos con Docker Compose.

    Capítulos del episodio:
    0:00 - Introducción: Shuul, el guardián de tus datos
    2:30 - El problema: bots de Rusia, China y Vietnam escaneando tu VPS
    3:50 - Cifras impactantes: 921.000 peticiones, 650.000 bloqueadas en 24h
    5:30 - Por qué Traefik no basta y cómo nace Shuul
    6:30 - Arquitectura: backend en Rust, frontend en React y un módulo en Go
    8:30 - Pipeline WAF: forward auth, geolocalización cacheada y reglas regex
    10:40 - Pipeline Jail: Shuul Reporter y bloqueo por intentos fallidos
    13:00 - Configuración, variables de entorno e integración con Traefik
    16:00 - Reglas, pesos, templates: Allow, Deny, ubicaciones y nodos Tor
    18:30 - Dashboard, logs en tiempo real y reflexión final

    Más información y enlaces en las notas del episodio
    🌐 Aquí lo puedes encontrar todo 👉 https://atareao.es
    ✈️ Telegram (el grupo) 👉 https://t.me/atareao_con_linux
    ✈️ Telegram (el canal) 👉 https://t.me/canal_atareao
    🦣 Mastodon 👉 https://mastodon.social/@atareao
    🐦 Twitter 👉 https://twitter.com/atareao
    🐙 GitHub 👉 https://github.com/atareao
  • Atareao con Linux

    ATA 835 Mi propio asistente de viaje con IA. Más allá de escribir código

    28/09/2026 | 36 min
    Este episodio no va de escribir código. Va de lo que pasa cuando te construyes tu propio asistente con inteligencia artificial, te lo metes en la mochila y te vas de viaje 10 días al sur de Italia. Spoiler: funciona, cuesta menos de 2€ en APIs, y tu pareja no técnica acaba preguntándole a tu bot dónde comer antes que a Google Maps.
    Te cuento la historia de Minerva, un asistente de viaje que escribí en Rust durante las dos semanas antes de irme a Puglia. La interface es Matrix — le escribes desde el móvil como si fuera un contacto más. Por detrás lleva OpenRouter con DeepSeek V4 Flash, Google Places para buscar restaurantes y monumentos, Brave Search para consultar horarios y precios, y SQLite para guardarlo todo. El binario pesa 12 megas, no necesita Docker, no necesita servidor. Solo un archivo de base de datos que cabe en un pendrive.
    Te cuento cómo planificó el viaje día a día, cómo nos buscaba sitios para comer (mención especial a la Osteria degli Spiriti en Lecce, el mejor restaurante del viaje), cómo consultábamos el tiempo cada mañana, y cómo cada noche escribía !diario y Minerva me generaba el resumen del día. Al final del viaje tenía los 10 días documentados sin haber abierto una sola pestaña del navegador.
    Y lo mejor: Ana, mi pareja, que no tiene perfil técnico, pasó de "¿esto qué es?" a "pregúntale a Minerva" en tres días. Ese fue el momento en que supe que no era un juguete.
    También te cuento lo que falló. Porque falló. Las alucinaciones del modelo (los Sassi de Matera no cuestan 15€ de entrada, son gratis). El tool calling de DeepSeek que a veces escribe XML en vez de invocar la función. La dependencia de internet en carreteras perdidas. El contexto que se satura después de varios días de uso. Y cómo solucioné cada problema — con retries, con resúmenes automáticos, con comandos directos tipo !gasto 45 Cena para cuando el lenguaje natural se vuelve ambiguo.
    Este episodio es para ti si alguna vez has pensado "me construyo una herramienta yo mismo" pero no te has lanzado. No necesitas un producto perfecto. Necesitas algo que funcione lo suficientemente bien para un caso de uso concreto. Minerva no era perfecta, pero era suficientemente buena. Y suficiente buena es mucho mejor que no existe.

    Capítulos del episodio:

    0:00 - Introducción: vuelta de vacaciones y la idea de Minerva
    2:30 - Feedback: el caos de organizar un viaje
    5:30 - La pila tecnológica de Minerva
    9:00 - Arquitectura: bot de Matrix en Rust
    12:30 - Herramientas: Google Places, Brave Search y Wikipedia
    16:00 - El prompt y la personalidad del asistente
    19:00 - Datos en bruto frente a datos parseados
    22:00 - Planificación de viajes con Minerva
    25:00 - Minerva en acción: ejemplos reales en Puglia
    28:30 - Alucinaciones, errores y lecciones aprendidas
    32:00 - Limitaciones de Matrix y el futuro del proyecto
    34:30 - Conclusiones: más allá de escribir código

    Más información y enlaces en las notas del episodio
    🌐 Aquí lo puedes encontrar todo 👉 https://atareao.es
    ✈️ Telegram (el grupo) 👉 https://t.me/atareao_con_linux
    ✈️ Telegram (el canal) 👉 https://t.me/canal_atareao
    🦣 Mastodon 👉 https://mastodon.social/@atareao
    🐦 Twitter 👉 https://twitter.com/atareao
    🐙 GitHub 👉 https://github.com/atareao
  • Atareao con Linux

    ATA 834 La alternativa a WatchTower para Docker

    24/09/2026 | 20 min
    WatchTower lleva tiempo sin mantenimiento. Y si tienes 60 stacks de Docker Compose con casi 100 imágenes, actualizarlas una a una es un infierno. Así que me puse manos a la obra y creé Alloy, un dashboard Docker escrito en Rust que me permite tenerlo todo controlado de un vistazo.
    En este episodio te cuento por qué dejé WatchTower y cómo Alloy resuelve los problemas que WatchTower nunca llegó a cubrir. Porque no solo se trata de actualizar imágenes: también necesitas saber qué ha pasado, cuándo, si ha ido bien, y enterarte si algo falla a las 3 de la mañana. Con Alloy eso cambia por completo.
    ¿Qué tiene Alloy que WatchTower no tenía? Historial completo de actualizaciones con la imagen anterior y la nueva, duración del proceso y estado final. Notificaciones integradas en Telegram y Matrix para enterarte de todo al instante. Políticas de actualización configurables por contenedor: puedes dejar que unos se actualicen solos, que otros solo descarguen la imagen sin reiniciar, o que ni siquiera se toquen. Logs en tiempo real con buscador integrado. Posibilidad de inspeccionar cada contenedor para ver puertos, volúmenes, redes, variables de entorno y etiquetas de Traefik. Y un dashboard adaptativo que funciona tanto en el ordenador como en el móvil.
    Y todo con autenticación OIDC a través de PocketID, sin necesidad de PostgreSQL, Redis ni bases de datos externas. Solo un binario con SQLite embebido. Nada de nada. Lo más sencillo posible.
    El backend está escrito en Rust con Axum y el crate Bollard para conectar con el socket de Docker. El frontend usa React con Mantine UI. Corre en una Raspberry Pi con 2 GB de RAM y consume un 0,5% de CPU y 60 MB de RAM. Vamos, un mecherito. Y lo mejor: soporta tanto Docker como Podman, de ahí el nombre Alloy, por la aleación entre los dos motores de contenedores.
    Te cuento también cómo gestiona los stacks de Docker Compose, agrupando los contenedores por proyecto. Cómo define políticas distintas para cada contenedor: no hacer nada, solo descargar la imagen, descargar y reiniciar el contenedor, o descargar y reiniciar el stack completo. Cómo hace rollback automático si algo falla, borrando la imagen nueva y restaurando la anterior. Y cómo se integra con Traefik para acceder directamente a cada servicio desde el dashboard con un solo clic.
    Y sí, lo reconozco: todavía lo estoy probando. Llevo como un mes y medio y algún ajuste fino necesita. De hecho, he encontrado que a veces, al reiniciar un contenedor, no termina de montarse bien con el resto del compose. Pero las ventajas respecto a WatchTower son tantas que ya no concibo volver atrás. Notificaciones, historial, logs, dashboard móvil... es otro nivel.
    Si estás harto de WatchTower o simplemente quieres tener más control sobre tus contenedores, este episodio te va a interesar. Y si además te mola Rust, pues ya ni te cuento.
    Capítulos del episodio:
    0:00 - Introducción: el problema de mantener 100 imágenes Docker actualizadas
    1:30 - ¿Por qué WatchTower ya no es suficiente?
    3:30 - Alloy: qué es y por qué está hecho en Rust
    5:30 - Arquitectura: Axum, Bollard, SQLite y React
    7:30 - Instalación y autenticación con OIDC y PocketID
    9:30 - El dashboard: contenedores, stacks y estado de un vistazo
    11:30 - Políticas de actualización por contenedor
    13:30 - Notificaciones vía Telegram y Matrix
    15:00 - Historial de actualizaciones (lo que WatchTower no tenía)
    16:30 - Logs en tiempo real e inspección de contenedores
    18:00 - Integración con Traefik
    19:00 - Interfaz adaptativa para móvil
    20:00 - Consumo de recursos: funciona en una Raspberry Pi
    23:00 - Conclusiones: ¿merece la pena el cambio?
    Más información y enlaces en las notas del episodio
    🌐 Aquí lo puedes encontrar todo 👉 https://atareao.es
    ✈️ Telegram (el grupo) 👉 https://t.me/atareao_con_linux
    ✈️ Telegram (el canal) 👉 https://t.me/canal_atareao
    🦣 Mastodon 👉 https://mastodon.social/@atareao
    🐦 Twitter 👉 https://twitter.com/atareao
    🐙 GitHub 👉 https://github.com/atareao
Más podcasts de Tecnología
Acerca de Atareao con Linux
Disfruta conmigo de Linux y del Open Source. Aquí encontrarás como sacarle el máximo partido a tu entorno de escritorio Linux, hasta como montar un servidor web, un WordPress, un proxy inverso, una base de datos o cualquier otro servicio que puedas imaginar. Y todo ello, lo puedes montar en una Raspberry Pi, en un VPS, en tu propio ordenador o en cualquier servidor. Vamos, cualquier cosa que quieras hacer con Linux, seguro, seguro, que la encontrarás aquí.
Sitio web del podcast

Escucha Atareao con Linux, Mundo Futuro y muchos más podcasts de todo el mundo con la aplicación de radio.net

Descarga la app gratuita: radio.net

  • Añadir radios y podcasts a favoritos
  • Transmisión por Wi-Fi y Bluetooth
  • Carplay & Android Auto compatible
  • Muchas otras funciones de la app