Escritos
Blog
Transparencia: la mayoría de las entradas se redactan con ayuda de IA, y las versiones que no están en inglés se traducen automáticamente con un LLM local y luego se revisan. ¿Has visto un error? Avísame, por favor.
-
Monitoreo y control seguro de una flota de sistemas de energía CC sobre SNMP
El rastreador de sistemas de energía Eltek descubre plantas rectificadoras desde Zabbix, las clasifica sondeando OIDs de identidad SNMP contra perfiles editables por proveedor, consulta cada 15 minutos métricas e inventario de componentes, y permite a los operadores cambiar parámetros del controlador sobre SNMP detrás de guardarraíles estrictos — validar, confirmar, establecer, leer-retroalimentar, auditar, revertir.
-
Sabiendo lo que realmente permite tu configuración de nginx: un auditor que calcula el acceso efectivo
nginx-acl-guard analiza una configuración de nginx con crossplane, calcula la política de acceso efectiva para cada servidor/ubicación y protege las ediciones detrás de un pipeline que difiere el acceso efectivo y rechaza cualquier ampliación no confirmada — copia de seguridad git, nginx -t en staging, intercambio atómico, rollback.
-
Un blog de auto-traducción: SQLite, un editor de Markdown y un LLM local
Cómo funciona este blog bajo el capó: las publicaciones residen en SQLite y renderizan Markdown en tiempo de solicitud, un editor de administrador reemplaza los archivos de tiempo de compilación, y un modelo local Gemma redacta las versiones en ruso y ucraniano para que yo las revise antes de publicarlas.
-
RAG para las preguntas vagas, una CLI determinista para las exactas
maximo-ticket-tools — un kit de herramientas de solo lectura sobre un sistema de tickets de problemas IBM Maximo: indexarlo en un Onyx RAG local para preguntas en lenguaje natural, pero responder 'cuántos' con consultas determinísticas, nunca el LLM. Más un panel PoP-map y un observador de Telegram.
-
Alquilar una casa con un LLM local como filtro
home.khanoff.com — un *watcher* que extrae listados frescos de alquiler de casas de dos fuentes ucranianas, puntúa cada uno según criterios humanos difusos con un LLM local, y me avisa en Telegram. El modelo nunca se detiene en la ruta de ingesta.
-
Un portal para residentes de una asociación de propietarios — en PHP y SQLite sencillos
osbb-wh.pp.ua — un gabinete web privado para los miembros de una asociación de apartamentos: anuncios, documentos, un registro de vehículos con OCR de matrícula, encuestas, boletas para la junta y correo interno. Sin framework, sin MySQL — PHP 8.3 y un archivo SQLite.
-
Abandonando WordPress: migrando mi sitio a Astro y SQLite
Por qué reemplacé una instalación de WordPress de 475 MB en andrew.khanoff.com con un único contenedor Astro y un archivo SQLite, y cómo hice la transición con cero tiempo de inactividad y un rollback con un solo comando.
-
Un flujo de trabajo diario de GitHub a LLM local que escribe mis tarjetas de proyecto
Cómo se rellena automáticamente la sección de Proyectos en este sitio: un cron job lee mis repos privados, le pide a un modelo local Gemma que redacte una descripción y fusiona el resultado en SQLite, sin sobrescribir nunca mis ediciones ni filtrar un repo privado.
-
Un centro de documentos familiar tolerante a errores tipográficos con FastAPI y Meilisearch
start.khanoff.com — un centro cálido y autoalojado para toda la familia: documentos, cómo hacerlo, recetas, enlaces y videos detrás de una caja de búsqueda indulgente. FastAPI + HTMX + Meilisearch + Immich, inicio de sesión con enlace mágico, PWA.
-
Creando un CV autoalojado con Astro, SQLite y un LLM local
Cómo se construye andrew.khanoff.com: Astro renderizado en el servidor, una única fuente de verdad SQLite, administración solo con passkey y un pipeline diario de GitHub→local-LLM que redacta las tarjetas del proyecto.
-
Bloqueo automático de atacantes con BGP: un IDS que anuncia rutas de agujero negro
Suri Defender: los feeds de detección (CrowdSec + fail2ban) impulsan un inyector de rutas ExaBGP que anuncia las IPs infractoras como rutas RTBH sobre iBGP, por lo que el tráfico de ataque se descarta en los bordes de la red, no en el servidor. Un stack de 2.7 GB reescrito a unos pocos cientos de MB.