Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

domingo, noviembre 01, 2026

De Hacker a Hacker: Pablo González vs. Alejandro Acosta. Cómo hacer developers de 1 millón de dólares.

Para hoy domingo os traigo una nueva edición de las entrevistas que hace nuestro querido Pablo González en su sección "De hacker a hacker", donde entrevista a profesionales de la ciberseguridad, el pentesting, el hacking y miembros de la comunidad hacker, aunque hoy se trate de  un Developers muy "hacker". Hoy le ha tocado el turno a Alejandro Acosta, del que ya os publiqué una entrevista yo. Un developer que llegó a ganar 1.000.000 USD de salario.

La entrevista en vídeo dura un poco menos de media hora y os la he subido junto al resto de todas las que ha hecho en la serie a a mi canal de Youtube para que la podáis disfrutar en cuanto tengáis un ratito libre,  para que podáis conocer un poquito más de primera mano a Alejandro Acosta, y su trabajo para ayudar a que los developers progresen profesional y salarialmente en sus carreras.


Como es habitual en esta sesión de "De Hacker a Hacker", en la charla, hablan de muchas cosas que tienen que ver también con formarse, con el impacto de la Inteligencia Artificial en la vida de los ingenieros en general y a los profesionales del desarrollo de software en concreto. Por supuesto, en cómo ayudar a los demás, a cómo aprender, a gestionar el impacto de la IA, y a mirar al futuro con ambición..

Figura 3: De Hacker a Hacker: Pablo González vs. Alejandro Acosta.

A los dos, además, los tenéis a vuestra disposición a tiro de mensaje de MyPublicInbox, donde cuentan con sus buzones por si quieres consultarles algo o contactarles para proponerles alguna colaboración, que son tipos muy dispuestos, como podéis ver.

 Puedes saber todo lo que hace hoy en día, en Engineer Game.

Figura 5: Engineer Game

Si te apetece, puedes ver todas las sesiones que hemos tenido hasta el momento en la lista de reproducción de "De Hacker a Hacker" que mantengo actualizada en mi canal, para que puedas ver todas las entrevistas y conocer cómo cada uno ha hecho y hace este camino en el mundo de la tecnología.

Publica tu libro con 0xWord

Por último, un recordatorio de que en MyPublicInbox se ha articulado un servicio de colaboración con todos los Perfiles Públicos de la plataforma para establecer una nueva vía de colaboración que permita que si tienen una idea de publicación de un libro, puedas hacerlo con 0xWord. De esta forma todos los Perfiles Públicos de MyPublicInbox pueden ir a la zona su perfil, y entre la lista de Servicios para Ti que ofrece esta plataforma, pueden solicitar información para publicar su libro con 0xWord.
Todos los usuarios de MyPublicInbox, si quieren ser Perfiles Públicos, pueden solicitarlo tal y como se explica en la web, y tendrán acceso a las dos decenas de servicios que ofrece actualmente esa plataforma, y entre otros este de publicación de libros.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


domingo, octubre 04, 2026

Entrevista a Alejandro Acosta, un developer de 1.000.000 USD

Yo siempre quise ser programador. Por eso en la universidad hice todas las asignaturas de programación, algorítmica y bases de datos. No me interesaba mucho la seguridad informática - por eso no la cursé - y era normal. Ya sabéis que comencé con 12 años a programar en BASIC tras ver la película de TRON de la que tanto os hablo por aquí.
Lo cierto es que me picó el veneno del hacking y la ciberseguridad, y ya es difícil cambiar eso, pero sigo amando a esa "rara avis" que existe es nuevo mundo como nombre antagonista a "Hacker": "Developer". Por eso cuando conozco algún developer quiero saber más de él. 
Este es el caso de Alejandro Acosta, que tras comenzar cobrando 300 € - yo comencé programando gratis en mi beca -, se fue a Silicon Valley a pasarse el juego, y lograr cobrar 1.000.000 de USD como desarrollador en Microsoft. No está mal. Puedes saber todo lo que hace hoy en día, en Engineer Game.

Figura 3: Engineer Game

Como creo que su historia es curiosa, le he hecho una entrevista, pero diferente. Le he dejado diez temas abiertos para que él conteste de ellos, y aquí están las respuestas. Si quieres conocer más de él, puedes contactar con él a través de su buzón de MyPublicInbox o solicitarle directamente una clase gratuita, si quieres hablar con él para mejorar tu competencia. 

1. El mito de las 1.000 entrevistas vs. la contratación en la era de la IA

Los fundamentos son hoy más importantes que nunca. En una entrevista no se evalúa únicamente si una persona puede completar un ejercicio de live coding o diseñar un sistema, sino su capacidad para analizar problemas reales, razonar bajo presión y encontrar soluciones aplicables a producción.

La inteligencia artificial es una gran aliada, pero resolver un ejercicio con su ayuda no demuestra por sí solo que alguien sea un buen ingeniero. La diferencia aparece cuando el entrevistador introduce nuevas restricciones, cuestiona una decisión o complica progresivamente el problema. Es en ese diálogo donde se comprueba si el candidato entiende realmente lo que está haciendo.

Por eso, especialmente en el mercado de Silicon Valley, prepararse sigue siendo fundamental. La constancia, el estudio y el dominio de áreas como live coding y system design continúan siendo determinantes para acceder a las mejores oportunidades y alcanzar una compensación elevada. Esa es también la razón por la que en EngineerGame acompaño a ingenieros de software que quieren dar un salto en sus carreras.

2. SRE y ciberseguridad: cuando el sistema cae a las 3:00 AM

El error más común es diseñar la arquitectura pensando que los incidentes pueden evitarse por completo. En las grandes empresas se asume que, tarde o temprano, habrá una caída crítica. La diferencia no está solamente en prevenirla, sino en la capacidad de detectarla, contenerla, recuperarse y aprender de ella.

La cultura es decisiva tanto antes como después del incidente. Antes, porque deben existir mecanismos de prevención, observabilidad y respuesta. Después, porque hay que realizar un análisis sin culpabilizar a las personas, identificar las causas y aplicar cambios que impidan que el mismo problema vuelva a repetirse.

Prácticas como Chaos Engineering permiten comprobar qué sucede cuando falla una dependencia, una región o un componente crítico. No todas las empresas necesitan aplicarlo con la misma profundidad, pero todas deberían diseñar sus sistemas partiendo de una idea básica: cualquier componente puede fallar.

3. AIOps y el dilema del self-healing

Confío en la inteligencia artificial como apoyo durante el ciclo de desarrollo y en las operaciones diarias. Puede ayudar a investigar incidentes, relacionar señales y reducir considerablemente el tiempo necesario para resolver problemas críticos.

Sin embargo, la autorremediación ya existía antes de la IA. Muchos incidentes pueden resolverse de manera más segura y predecible mediante automatizaciones tradicionales: reiniciar un servicio, escalar recursos o ejecutar un procedimiento previamente validado. No hace falta introducir un modelo de IA donde un sistema determinista ya resuelve bien el problema.

La frontera debe establecerse en función del riesgo. Un agente puede recomendar acciones o ejecutar operaciones reversibles dentro de unos límites muy definidos, pero no debería disponer de permisos ilimitados sobre producción. Cuanto mayor sea el impacto potencial de una decisión, mayores deben ser la supervisión humana, la trazabilidad y los mecanismos de aprobación. La IA debe potenciar al equipo, no sustituir los controles operativos y de seguridad.

4. Emprender con open source

Hoy el open source ya no es una alternativa marginal: forma parte del ciclo de desarrollo de prácticamente cualquier empresa tecnológica. Lenguajes como Go, Python o Rust y plataformas como .NET muestran hasta qué punto la innovación actual se construye de manera abierta y colaborativa.

Que el código sea visible puede facilitar que un atacante estudie sus vulnerabilidades, pero también permite que muchas más personas lo auditen, detecten errores y propongan mejoras. La seguridad no depende únicamente de que el código sea abierto o cerrado, sino de cómo se mantiene el proyecto, cómo se revisan las contribuciones y con qué rapidez se corrigen las vulnerabilidades.

Mi apuesta seguirá siendo la innovación abierta, acompañada de una gestión responsable de dependencias, auditorías continuas y procesos claros de actualización y respuesta ante incidentes.

5. El bug cultural: Madrid vs. Silicon Valley

La diferencia principal es de mentalidad. En Estados Unidos, y especialmente en Silicon Valley, es habitual encontrar desarrolladores que buscan crecer constantemente, asumir retos y aumentar el impacto de su trabajo. Es un entorno en el que la innovación necesita talento y donde existe una competencia muy intensa por progresar.

En el ecosistema español, a veces echo en falta algo más de ambición y predisposición a asumir riesgos. Es una diferencia cultural que he observado trabajando y conversando con profesionales tanto en Estados Unidos como en España.

El parche pasa por dejar de concentrarse en la queja y empezar a tomar decisiones. Hay que aceptar que crecer implica incomodidad, aprendizaje continuo y exposición al fracaso. No se trata de copiar Silicon Valley, sino de adoptar una mentalidad más activa: querer más, prepararse mejor y actuar en consecuencia.

6. Shadow IT y la tentación del desarrollador en la era de la IA

La solución no consiste en enfrentar la velocidad del desarrollador con el control del equipo de seguridad. Ambos objetivos deben integrarse en el mismo ciclo de desarrollo.

Cada vez veo más empresas incorporando herramientas de seguridad y controles de compliance directamente en los repositorios y los procesos de CI/CD. Esto permite detectar dependencias vulnerables, revisar configuraciones, aplicar parches y bloquear cambios de riesgo antes de que lleguen a producción.

El equipo de seguridad debe ofrecer mecanismos rápidos y fáciles de utilizar, no convertirse en un obstáculo que los desarrolladores intenten evitar. Cuando los controles están automatizados y aparecen en el momento adecuado, por ejemplo durante la revisión de una pull request, es posible mantener la velocidad sin trasladar toda la remediación al final del proceso. Lo digo también desde la experiencia de haber participado en proyectos donde ha sido necesario conciliar ambos mundos.

7. La newsletter diaria y el valor de la comunicación directa

La clave está en la personalización. En un entorno saturado de contenido automático, las personas valoran saber que detrás de una respuesta hay alguien que ha leído su caso y se ha tomado el tiempo de comprenderlo.

Por eso mantengo abiertos mis canales de comunicación y trato de responder personalmente a quienes contactan conmigo. Para mí no es solo una estrategia de marca personal, sino una manera de ayudar de forma directa a profesionales que quieren mejorar su carrera.

La tecnología permite llegar a muchas personas, pero la confianza se construye conversación a conversación. Esa cercanía es difícil de sustituir con respuestas masivas, por muy sofisticadas que sean.

8. La seguridad en el pipeline CI/CD

Los primeros síntomas aparecen cuando desplegar rápido se convierte en la única métrica de éxito. Si cualquier dependencia puede incorporarse sin validación, los secretos aparecen en configuraciones o repositorios, los permisos del pipeline son excesivos y los controles de seguridad se realizan únicamente después del despliegue, existe un problema claro.

La seguridad debe formar parte del CI/CD desde el principio: análisis de dependencias, detección de secretos, revisión de permisos, escaneo de imágenes y artefactos, validación de cambios y protección de ramas y entornos críticos.

Estos controles deben diseñarse con suficiente flexibilidad para no bloquear innecesariamente al desarrollador. En ese punto, la automatización y los agentes pueden ser muy útiles: permiten detectar riesgos durante la pull request, explicar el problema y proponer una remediación antes de que el cambio llegue a producción.

9. Move fast and break things frente a la realidad del ciberriesgo

Aunque este lema se ha asociado durante años con empresas como Meta, no representa el funcionamiento de toda la industria tecnológica. Muchas compañías son mucho más cautelosas, especialmente cuando gestionan datos sensibles o infraestructuras críticas.

Sí es cierto que en Silicon Valley los cambios se producen a gran velocidad. En SRE, por ejemplo, he visto evolucionar una misma infraestructura desde Mesos y DC/OS hasta Kubernetes, EKS, AKS o Cluster API en un periodo relativamente corto. Esa velocidad puede exigir rediseños profundos, pero no significa que la seguridad deba ignorarse.

La interpretación correcta no debería ser «avanza rápido y rompe cualquier cosa», sino «aprende y evoluciona rápido dentro de unos límites seguros». La ciberseguridad debe estar presente desde el día cero, con equipos y procesos capaces de acompañar la innovación. Cuanto más rápido se mueve una empresa, más importantes son los controles que permiten hacerlo sin asumir riesgos inaceptables.

10. El hotfix mental para el ingeniero moderno

Aplicaría un hotfix muy concreto: dejar de pensar que una buena carrera se construye únicamente escribiendo buen código. Un ingeniero debe dominar los fundamentos técnicos y saber resolver problemas, pero también necesita aprender a comunicar, negociar, mostrar su valor y tomar decisiones estratégicas sobre su trayectoria.

La inteligencia artificial no elimina esa necesidad. Puede acelerar muchas tareas, pero no sustituye el criterio, el conocimiento técnico ni la responsabilidad sobre las soluciones que se llevan a producción.

Si pudiera abrir una pull request para actualizar la mentalidad de cualquier desarrollador, incluiría estos elementos: consistencia, persistencia, capacidad de comunicación y venta, marca personal, negociación y un dominio técnico sólido, incluidos live coding y system design. En definitiva, tratar la carrera profesional como un proyecto del que uno mismo es responsable.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


viernes, julio 24, 2026

AI Engineering Bootcamp: Basta de hacer tutoriales y construye tu propio asistente con IA en producción

Vivimos rodeados de Inteligencia Artificial, pero la inmensa mayoría de la gente que trabaja "con IA" en realidad se limita a llamar a una API, copiar un prompt de Twitter/X o encadenar un par de bloques en una herramienta no-code. Saben usar la IA como usuario avanzado, pero no entienden qué pasa por debajo: cómo se sirve un modelo, cómo se diseña un agente que razona y actúa, cómo se protege un sistema LLM de un ataque de prompt injection o cómo se lleva todo eso a producción para que funcione 24/7 sin que se caiga a la primera de cambio.


Esa distancia entre "usar IA" y "construir con IA" es, ahora mismo, la que separa a un consumidor de prompts de un auténtico AI Engineer. Y es precisamente esa distancia la que Ferrumox Academy ha diseñado para recorrer en 9 semanas con su AI Engineering Bootcamp.


Cohorte 2: arranca la semana del 2 de septiembre

El AI Engineering Bootcamp de Ferrumox Academy no es un curso de vídeos a tu ritmo ni una colección de slides sobre "el futuro de la IA". Es un programa intensivo y práctico: una sesión en directo por semana de 2 horas (tú eliges grupo de lunes, miércoles o viernes, de 18:00 a 20:00) y el resto de la semana para construir, con material previo antes de cada directo y un entregable funcionando al final de cada semana.


El objetivo final no es "terminar un curso". Es salir con tu propio asistente con IA corriendo en producción: accesible desde Telegram, con memoria persistente, capaz de orquestar varios agentes especializados vía MCP y conectado a tus propios documentos mediante RAG híbrido. Construido por ti, entendido por ti, no copiado de un repositorio de GitHub.

Un programa que va desde la inferencia hasta producción, semana a semana

A lo largo de las 9 semanas (con una sesión 0 bonus de preparación incluida) el temario progresa capacidad a capacidad, sin frameworks mágicos que oculten lo que está pasando por debajo:
  • Semanas 1-2: Infraestructura de inferencia propia, local y en la nube (Ollama, vLLM, APIs de OpenAI y Anthropic), y adaptación de modelos con LoRA y QLoRA.
  • Semanas 3-4: Context engineering, gestión de memoria persistente y diseño del bucle de agente (agentic loop) con el patrón ReAct y tool calling, implementado sin frameworks para entender de verdad el ciclo razonar-actuar-observar.
Figura 4: Semanas 00 a 03
  • Semanas 5-6: RAG avanzado con recuperación híbrida y reranking, y sistemas multi-agente con orquestación vía MCP siguiendo el patrón supervisor.
Figura 5: Semanas 04 - 07
  • Semanas 7-8: Seguridad de sistemas LLM, modelado de amenazas, prompt injection, jailbreaking y diseño de guardrails, y despliegue en producción con observabilidad, evals y control de costes.
  • Semana 9: Demo day, presentación del proyecto ante toda la cohorte y hoja de ruta para seguir construyendo.
Figura 6: Semanas 8 y 9

Uno de los puntos diferenciales del programa es precisamente el módulo de LLM Security: menos del 1% de los AI Engineers sabe auditar un sistema LLM de verdad, y este bootcamp dedica una semana completa a aprender a atacarlo y a defenderlo, algo que a día de hoy no se encuentra en ningún otro bootcamp en España.

Quién está detrás del programa

El bootcamp lo imparto directamente yo, Manuel S. Lemos, fundador de Ferrumox y Claude Certified Architect de Anthropic (la primera certificación técnica oficial que ha emitido la compañía, sólo accesible por invitación), además de AI Engineer en NaizFit, coautor del libro Hacking IA (0xWord, 2026), contribuidor de OWASP GenAI Security y Vicepresidente de ANBAN. Anteriormente Director Académico de IA & Big Data en GeeksHubs Academy durante cuatro años. También he dado charlas en el GenAI Summit EU, Codemotion Madrid, TofuConf, el Máster de Ciberseguridad del CIPFP Cheste y el podcast de Hackers, entre otros escenarios. 

Lo que se enseña en el bootcamp es, literalmente, lo que se construye en producción cada día. Ferrumox es el proyecto para unir dos cosas que normalmente van por separado: ingeniería de IA de verdad y formación de alto nivel. Por un lado está Fox, el motor de inferencia LLM en Rust, de código abierto y gratuito para siempre (sin planes de pago ni capital de por medio), pensado como sustituto directo de Ollama con hasta 4 veces más eficiencia gracias al prefix caching y al continuous batching.

Precio, plazas y un regalo que no falta en ninguna edición

La Cohorte 2 arranca la semana del 2 de septiembre de 2026 y tiene 36 plazas repartidas en 3 grupos de 12 (lunes, miércoles y viernes). Las primeras 12 plazas entran a 997 €; a partir de ahí el precio pasa a 1.200 €. Todas las sesiones se graban y quedan disponibles antes de 24 horas, así que si algún día no puedes conectarte en directo no te quedas fuera. 

Y, como no podía ser de otra manera en este blog, hay premio para los alumnos: cada persona de la Cohorte 2 recibe un ejemplar del libro Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment de 0xWord, incluido sin coste extra en la plaza, y habrá un chat en MyPublicInbox constante conmigo y con Chema Alonso.

Go for it!

Si necesitas un empujón más para decidirte, el 10 de Agosto haremos una clase gratuita que te puedes apuntar desde nuestra web. Además el bootcamp incluye feedback escrito de tus proyectos en 48 horas, repo privado con todo el código, comunidad privada de la cohorte, acceso a las grabaciones de futuras ediciones y más sorpresas.

¡Happy hacking!

Autor: Manuel S. Lemos, Fundador de Ferrumox y director del AI Engineering Bootcamp

sábado, julio 11, 2026

SYNAPTIC Sentinel v0.3.22: El Auditor de Seguridad en tu Visual Studio Code. Open Source. Gratuito. BYOK.

En corto. SYNAPTIC Sentinel es un auditor de seguridad que vive dentro de Visual Studio Code y revisa tu código, el que genera la IA, tus dependencias y tu configuración, sin que nada salga de tu máquina. Es software libre bajo Apache-2.0, totalmente gratuito, y queda a disposición de cualquier desarrollador: se instala desde el Marketplace, corre en local y sólo usa tus propias APIKeys de IA si quieres el triaje asistido. Si escribes código con ayuda de un asistente, vale la pena instalarlo y probarlo hoy mismo. Lo que sigue en este artículo es un recorrido por la versión 0.3.22 con datos de un proyecto real.


Ejecutas un triaje de seguridad con un modelo de IA. Te dice: “falso positivo, confianza 95%”. Cambias de proveedor, vuelves a lanzarlo, y ahora el mismo hallazgo aparece como “no concluyente, confianza 40%”. ¿A cuál le crees? Peor todavía: si nadie te avisa de que la respuesta cambió, te quedas con la última que viste y sigues adelante.

Esa es exactamente la incomodidad que ataca la versión 0.3.22 de SYNAPTIC Sentinel, la herramienta Open Source (Apache-2.0) de auditoría de seguridad para código asistido por IA que GoLab mantiene en el Marketplace de VS Code. Las capturas de este artículo salen de un workspace real, SYNAPTIC_SAAS, con datos reales sobre un scan de 44 hallazgos. No hay mockups.

El scan: 44 hallazgos y de dónde salen

Un escaneo de SYNAPTIC Sentinel arranca por la capa determinista: cinco scouts corriendo en paralelo sobre el repositorio. En este caso, OpenGrep encuentra 1 hallazgo, Gitleaks 2, Trivy 45, Checkov 0 y Vibe-Detect 0. Tras la deduplicación y las supresiones conocidas quedan 44 hallazgos para triar, que el sidebar desglosa por estado: 33 true positive, 10 inconclusive, 1 false positive.


La línea que importa en v0.3.22 es la de arriba: 

Scan diff vs previous triage: 1 new, 9 re-classified 
(0 class, 9 confidence, 0 provider), 34 unchanged.

SYNAPTIC Sentinel ya no se limita a decirte qué encontró: te dice qué cambió respecto del triaje anterior y por qué. De las 9 reclasificaciones, las 9 fueron por variación de confianza, ninguna por cambio de clase ni de proveedor. Antes, esos 9 hallazgos habrían contado como “sin cambios” pese a que su confianza se había movido. Ahora el resumen refleja lo que realmente pasó.

Cuando el veredicto cambia entre proveedores

Este es el corazón de la versión. Mira el hallazgo de @grpc/grpc-js 1.14.3, vulnerable a CVE-2026-48068. Está marcado como no concluyente, y sobre la tarjeta aparece un banner naranja: Verdict changed since last scan: inconclusive 0% a inconclusive 40%, con la razón Confidence changed significantly (Δ 0.40).


El banner salta solo cuando el veredicto actual difiere del anterior. La razón sigue una precedencia clara: primero mira si cambió el proveedor, luego la clase (TP/FP/INC), luego la confianza, con un umbral configurable que por defecto es 0.15. Es un aviso barato de calcular y difícil de ignorar. Antes, esa varianza entre proveedores era invisible: cambiabas de modelo, el número se movía por debajo y nadie te lo decía.

La memoria de la colonia y el historial Previously

Cada hallazgo guarda su trayectoria completa. La sección Previously es colapsable, y al abrirla ves todos los veredictos anteriores con su timestamp, su proveedor y su racional. Eso vive en la tabla verdict_history de colony.db, la base SQLite local que SYNAPTIC Sentinel mantiene en el directorio .sentinel/ del propio repo. Es append-only por diseño: el comando de re-triaje no borra el historial. Cambias de proveedor, vuelves una semana después, y la trayectoria completa sigue a un clic de distancia.


Esa misma memoria acelera los escaneos. Cuando un patrón se ha visto antes con evidencia sólida, Sentinel lo preclasifica sin gastar una llamada al LLM. En la captura, el hallazgo de protobufjs (CVE-2026-41242) sale marcado como true positive al 75% porque el patrón SCA:CVE-2026-41242 ya fue true positive en 3 hallazgos previos.

Y cuando varios hallazgos comparten la misma raíz, uno actúa de representante (badge GROUPED REP) y hace la llamada real; los demás son miembros (badge GROUPED) que heredan el veredicto con una rebaja de confianza del 0.9x. Así el representante queda al 75% y el miembro al 68%, con el sufijo [group SCA:protobufjs@7.5.4:CVE-2026-41242, member 2 of 2] en el racional para que la propagación sea auditable. Alta confianza en el grupo, media en cada miembro suelto: honestidad epistémica en vez de un número inflado.

Agrupar para no quemar tokens, y un proveedor por agente

La agrupación no es solo higiene visual: ahorra dinero. En esta sesión, Grouping: 

12 group(s) covering 24 findings; 20 solitary. 
LLM calls saved by grouping: 12.

Doce llamadas al modelo que no se hicieron porque el veredicto se propagó dentro del grupo. SYNAPTIC Sentinel además deja elegir un proveedor distinto por agente. En el agents.yaml de esta sesión:

triage=OpenAiCompatible, context=Anthropic, remediation=Anthropic. 

La idea es mezclar por coste, calidad y privacidad, con las llaves siempre bajo modelo BYOK (Bring Your Own Key), leídas del entorno y nunca escritas en el repo.


Y aquí viene el detalle que más me gusta: cuando algo falla, SYNAPTIC Sentinel lo enseña. En el terminal se ven los 404 de los agentes de contexto y remediación porque el modelo configurado (deepseek-v4-pro) no existía bajo el proveedor apuntado. En lugar de tragarse el error y devolver un veredicto vacío como si nada, la herramienta lo escupe a la vista. Un fallo de configuración se vuelve visible en vez de silencioso, que es justo lo que quieres en una herramienta de seguridad.

Remediación honesta: cuando el bump no basta

Un aviso de “actualiza la dependencia” es fácil de dar y muchas veces está mal. SYNAPTIC Sentinel  agrupa las remediaciones de SCA y, cuando la cosa no es tan simple, lo dice. En el caso de prismjs, el panel no se limita a “sube a 1.30.0”: avisa Top-level bump alone will NOT fix this (npm) y entrega el override exacto que hay que aplicar, con botón de copiar, porque una dependencia transitiva está fijando una versión vulnerable anidada.


Lo mismo con protobufjs, que arrastra 22 hallazgos vía @google-cloud/firestore: el fix es heterogéneo entre major tracks, y subir a una sola versión puede dejar otros CVE abiertos, así que hay que aplicar los máximos por track. Es el tipo de matiz que un escáner que solo lista CVEs nunca te da.


Falsos positivos que no vuelven

El taint analysis de SYNAPTIC Sentinel marca, por ejemplo, un sentinel-js-taint-sql-injection en src/api/routes/agent.ts:62: datos controlados por el usuario que fluyen a un sink SQL dentro de un string. Si tras revisarlo es un falso positivo, el quick fix Mark as false positive lo añade a fp_known en colony.db y deja de aparecer en escaneos posteriores. 

No se pierde del historial, simplemente deja de hacer ruido. Y como el patrón queda en la memoria de colonia, la próxima vez que aparezca uno igual se pre-clasifica solo, con la nota was false_positive in 3 prior findings.

Para CI/CD y con el coste a la vista

Todo esto también corre fuera del editor. El comando synaptic-sentinel diff --json devuelve la reclasificación en JSON estructurado, con la razón y los deltas exactos de cada cambio, listo para alimentar un dashboard o para filtrar con jq en un pipeline. 
La bandera --fail-on convierte el scan en un gate por severidad. Y al final de cada sesión tienes el coste real: en el ejemplo, el agente de triaje con DeepSeek v4-pro consumió 0,0046 USD en 8 llamadas. Sabes lo que te costó el scan antes de que llegue la factura del proveedor. Los conteos de tokens son estimaciones (chars/4, con un margen del 15-20%) y aparecen marcados como tales, sin vender una precisión que no se tiene.

Por qué esto importa

La promesa de v0.3.22 es sencilla: la confianza en un veredicto de seguridad no debería evaporarse al cambiar de proveedor ni al pasar una semana. El banner de veredicto cambiado, el historial append-only en colony.db y el desglose de reclasificaciones convierten la varianza entre modelos en algo visible y auditable, en vez de un número que se mueve a tus espaldas. Súmale la agrupación que ahorra llamadas, la remediación que admite cuándo un bump no basta y los errores mostrados sin maquillaje, y tienes una herramienta que prefiere decirte la verdad incómoda antes que un resultado bonito.


Todo bajo Apache-2.0, sin tier premium y con BYOK sobre el proveedor que elijas. La v0.3.22 se distribuye como release en GitHub con su .vsix, y el código está abierto para que lo audites tú mismo.

La mirada de Orsyon. En Orsyon lo usamos en las entregas. Cada desarrollo pasa por SYNAPTIC Sentinel antes de llegar al cliente, y el historial append-only de colony.db nos deja una evidencia auditable del triaje, no sólo del escaneo. Si un hallazgo cambia de veredicto entre una entrega y la siguiente, el banner lo pone a la vista con su razón y su fecha. Para quien trabaja bajo el doble cumplimiento chileno (Ley 21.663 de ciberseguridad y Ley 21.719 de datos personales), esa trazabilidad es parte de la evidencia de control, no un extra.

jueves, junio 11, 2026

DONKEY.BAS on the Edge: Cómo revivimos el juego de Bill Gates de 1981 con Cloudflare Workers y Pages (Just For Fun!)

Hace unos días hablando con Chema Alonso me topé otra vez con uno de esos pequeños tesoros que la historia de la informática guarda en un cajón. DONKEY.BAS. Cuatro mil quinientos bytes de BASIC que vienen de 1981 y que, sin embargo, dan para hablar de muchas cosas. De cómo se hacía software cuando un PC tenía 16KB de RAM, de una de las polémicas más divertidas de la historia de Microsoft y, sobre todo, de algo que veo todos los días en mi trabajo, que es lo fácil que es hoy modernizar y desplegar cualquier aplicación gracias a la plataforma de Cloudflare.

Así que cogí el código original, lo migré a la web y lo puse a correr en producción en Cloudflare Pages en cuestión de minutos. Os cuento la historia completa, que tiene su miga. De la historia de este juego, por lo visto, se habla en el libro de  "Microhistorias: anécdotas y curiosiades de la historia de la informática (y los hackers)" de Fran Ramírez y Rafel Troncoso en 0xWord, que os dejo por aquí.

Figura 2: Libro de "Microhistorias: anécdotas y curiosiades de la historia
de la informática (y los hackers)" de Fran Ramírez y Rafel Troncoso 0xWord.

Por cierto, antes de entrar en materia con DONKEY.BAS, os recuerdo que ya os publiqué un caso parecido con la migración del mítico Arkanoid en el artículo titulado: "Cómo migrar Arkanoid de C++ a TypeScript con OpenCode y desplegarlo en Workers de Cloudflare".

La historia: el juego que Bill Gates escribió... y por el que le pincharon durante años

DONKEY.BAS lo escribieron en 1981 Bill Gates y Neil Konzen para demostrar las capacidades gráficas (el flamante modo CGA) y de sonido (el mítico PC speaker) del IBM PC, junto con la potencia del intérprete de BASIC que Microsoft había desarrollado para IBM. Venía incluido en las primeras versiones de PC-DOS, así que millones de personas lo tuvieron delante.

Figura 3: El juego de Donkey.BAS Version 2.0 (Fixed Version)

¿El juego? Sencillísimo: conduces un coche por una carretera de dos carriles y solo puedes hacer una cosa, cambiar de carril con la barra espaciadora para esquivar a los burros que van apareciendo. Si chocas, ¡BOOM! y punto para el burro. Si lo esquivas, "Donkey loses!" y punto para ti. No hay más objetivo. No hay final.

Y aquí viene lo "polémico".

Que uno de los fundadores de Microsoft hubiera firmado un juego tan primitivo —con gráficos que parpadeaban y una jugabilidad de quince segundos— se convirtió con los años en una especie de chiste recurrente en la industria.

Cuando salió el Macintosh en 1984, desde el mundo Apple se usó DONKEY.BAS como ejemplo de lo tosco que era el software del bando IBM/Microsoft frente a la elegancia gráfica del Macintosh. Bill Gates, lejos de esconderlo, siempre lo defendió con orgullo: era una demo técnica de lo que se podía hacer, no una obra maestra del diseño de videojuegos.


Hay un detalle que a mí me encanta y que demuestra que las prisas de 1981 eran las mismas que las de hoy: si miráis el código original, en la pantalla de título pone Version 1.1O... con una letra "O mayúscula" en lugar de un cero - tal vez por no mostrar a los usuarios el famoso 0 de las tipografías de los ordenadores con la raya cruzada que los no técnicos quizá nunca entendieron -. Usas una O en lugar de un 0 con la raya cruzada, era igual que en algunas máquinas de escribir donde en lugar de usar el 1 se hacía con la "l" minúscula.

O quizá es un typo que lleva más de cuarenta años viajando por copias y copias del fichero. Quien diga que nunca ha subido a producción con una errata, que tire la primera piedra. El código fuente original que usé como referencia está perfectamente conservado aquí:

Merece la pena abrir el .BAS y leer esos GOTO, esos POKE 106,0 y esos SOUND 37+RND*200,4. Es arqueología pura, y para los amantes del BASIC, un placer visual. 

La migración: de GOTO y POKE a HTML5, Canvas y Web Audio

Lo bonito de un código tan pequeño es que se puede entender entero y replicar su lógica con fidelidad. El programa en BASIC original hace, en esencia, esto:
  • Pinta la carretera con dos líneas verticales y una línea central discontinua que se desplaza para dar sensación de avance:
    • (`LINE`, `STEP 20`).
  • El coche solo tiene dos posiciones X. El truco de cambiar de carril es maravillosamente simple:
    • `CX = 252 - CX` (línea 1730).
  • El burro aparece en un carril al azar: 
    • `DX = 105 + 42*INT(RND*2)` (línea 1700).
  • La colisión esta en la línea 1750 con IF que dispara el BOOM! y la animación de fragmentos volando a las esquinas en las líneas 2060-2200.
    •  `IF CX=DX AND Y+25>=CY` (línea 1750) 
  • Y el sonido, esos pitidos monofónicos del PC speaker, salen de las instrucciones `SOUND`.
Para esta prueba lo reescribí desde cero en HTML5 + CSS + JavaScript puro (Vanilla JS), sin frameworks ni motores de juego pesados, porque la gracia era mantener el espíritu minimalista del original:
  • Gráficos: con la API de Canvas, respetando la resolución y la paleta CGA (negro, cian, magenta, blanco), pero con escalado nítido (`image-rendering: pixelated`) para que se vea bien en una pantalla 4K de hoy.
  • Sonido: con la Web Audio API, generando ondas cuadradas para emular el PC speaker, un pitido corto al cambiar de carril y una ráfaga aleatoria de tonos para la explosión, calcada del `SOUND 37+RND*200,4`.
  • Controles: barra espaciadora para cambiar de carril y Esc para salir, tal cual el original... y, ya puestos a modernizar, soporte táctil para jugar desde el móvil.
Comenté cada bloque del JavaScript indicando qué línea del BASIC original estaba replicando, porque me parecía la mejor forma de honrar el código de Gates y Konzen: no reinventarlo, sino traducirlo.


El despliegue: de cero a producción con Cloudflare Pages en minutos

Y aquí es donde, como Account Executive en Cloudflare, no puedo evitar ponerme un poco pesado, porque es justo lo que me enamoró de esta plataforma. Tenía tres ficheros (`index.html`, `style.css`, `game.js`) y quería ponerlos en internet, con HTTPS, en una red global y sin montar ni un solo servidor. Pues bien:

```bash
wrangler login
wrangler pages deploy .
```

Y ya está. Literalmente. Wrangler (el CLI de Cloudflare) subió los ficheros, creó el proyecto y me devolvió una URL de producción servida desde más de 330 ciudades repartidas por el mundo. Sin aprovisionar máquinas, sin configurar un balanceador, sin pelearme con certificados TLS. El juego de Bill Gates de 1981 corriendo en la red perimetral más grande del planeta, gratis y en edge.


Para quien prefiera no tocar la terminal, Cloudflare Pages también permite el despliegue por Direct Upload: arrastras la carpeta al panel y listo. O lo conectas a tu repositorio de Git y cada Push despliega solo, con Preview Deployments por cada rama para revisar cambios antes de pasarlos a producción.

¿Y qué tiene esto que ver con modernizar de verdad?

DONKEY.BAS es un juguete, claro. Pero la historia que cuenta es exactamente la misma que vivo con empresas que arrastran aplicaciones de hace veinte o treinta años: hay un core de lógica de negocio valioso atrapado en una tecnología que ya nadie quiere mantener, y el reto no es reescribirlo todo de golpe, sino modernizar la capa de entrega y de ejecución para llevarlo donde están hoy los usuarios.

Y ahí la propuesta de Cloudflare es potentísima, porque no se queda en servir ficheros estáticos:
  • Cloudflare Workers: ejecuta tu lógica de backend en JavaScript, TypeScript, Python o Rust (vía WebAssembly) directamente en el edge, con arranques en frío de milisegundos. Olvídate de pensar en servidores o en regiones; tu código corre cerca del usuario, donde esté.
  • Cloudlfare Pages + Functions: para frontends modernos con su API integrada, sin coser dos plataformas distintas.
  • Almacenamiento y estado en el edge: Workers KV, D1 (SQL), R2 (objetos, sin tarifas de salida) y Durable Objects para coordinación y estado en tiempo real. Tu aplicación heredada puede ir migrando piezas a estos servicios sin un Big Bang.
  • Seguridad de serie: WAF, mitigación de DDoS, *bot management* y Zero Trust delante de todo. Modernizar también es poner la seguridad por delante, no como un parche posterior.
  • IA en el edge con Workers AI y AI Gateway: por si a ese DONKEY.BAS del futuro queréis ponerle un rival que conduzca solo con IA.
La clave es que puedes hacerlo incremental. Pones Cloudflare delante de tu aplicación actual, empiezas a mover funcionalidad a Workers poco a poco (el patrón strangler fig de toda la vida) y, sin pararlo todo, acabas con una arquitectura distribuida, segura y rápida. Igual que yo no reescribí la lógica de DONKEY.BAS, sino que la trasladé a una plataforma moderna.

Conclusión: cuarenta años después, el burro sigue cruzando

Me hace especial ilusión que un trozo de código de 1981, escrito por dos genios con un IBM PC y muchísimo ingenio, pueda estar hoy en producción en una red global sin tocar un servidor. Es la mejor metáfora que se me ocurre de para qué sirve todo esto: 

La tecnología cambia, pero las buenas ideas —y los buenos cores de negocio— merecen viajar bien.

Si tenéis una aplicación heredada que os da miedo tocar, hablemos. A lo mejor vuestro "DONKEY.BAS" particular está a un `wrangler pages deploy` de tener una segunda vida. Y si solo queréis jugar y esquivar burros como en 1981, también os entiendo perfectamente. Puedes jugar a DONKEY.BAS en Cloudflare aquí.

Que gane el mejor conductor.

Autor: Carlos Luengo,  Senior Account Executive en Cloudflare. 

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares