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

domingo, noviembre 08, 2026

2a Edición del Máster en IA Aplicada & Optimización de Procesos Productivos (15 de Noviembre)

Cómo ya has visto, el mundo cambió para no volver a lo que era antes. Lo estamos viendo constantemente. Las grandes empresas se están re-estructurando para meter en el corazón de su negocio la Inteligencia Artificial. Y esto está llevando a que muchos trabajadores estén siendo despedidos por planes de re-estructuración de la fuerza laboral. También estamos viendo el nacimiento de muchísimas nuevas empresas que, con un número muy pequeño de empleados, están creciendo como la espuma gracias a haber desarrollado soluciones y modos de trabajo súper-potentes. Todas ellas basadas en procesos de negocio hechos con Inteligencia Artificial. El mundo del trabajo, el emprendimiento y los puestos empresariales han cambiado.
Con ese principio se ha construido el Máster en IA Aplicada & Optimización de Procesos Productivos que se va a presentar el próximo Domingo 15 de Noviembre. Un Máster pensado para una nueva generación de profesionales y emprendedores que tienen claro que la Inteligencia Artificial tiene que ser parte del ADN de su trabajo. 
El mundo laboral anterior ya no existe, y si sales al mercado laboral o te lanzas a emprender y no tienes esto claro, entonces estás condenado a no salir airoso de donde te vas a meter. Se trata de que los asistentes de esta formación tengan las capacidades en IA que les permita ser de los más preparados en este nuevo "orden" laboral.

El objetivo de este Máster en IA Aplicada & Optimización de Procesos Productivos, está orientado a manejar los modelos de Inteligencia Artificial desde el primer día de clase, a conocer cómo aplicar en workflows de negocio estás tecnologías, a construir Agentes IA que puedan ser parte de los organigramas empresariales o directamente tus compañeros y tu equipo de trabajo. 
La presentación de este Máster en IA Aplicada & Optimización de Procesos Productivos, que será online con clases en directo por profesionales del sector, como mi compañero David Hurtado de Microsoft, o Carlos Luengo de Cloudflare y un largo número de profesionales del sector focalizados en explicar la aplicación de IA en el Core de los negocios y la empresa.
Los contenidos de esta formación están pensados para aplicar la Inteligencia Artificial en el mundo del emprendimiento y la empleabilidad profesional. Con especial foco en competitividad profesional de los asistentes.
  • Módulo de IA aplicada a la inversión
  • Módulo de IA aplicada al emprendimiento
  • Módulo de IA aplicada a la carrera profesional/empleabilidad
  • Módulo de IA aplicada a marketing y creación de contenido
  • Módulo de IA aplicada a las finanzas
Supongo que si me sigues en mi blog o en mis redes sociales has visto que todas las semanas más de la mitad de los artículos que escribo están dedicados a la Inteligencia Artificial, y no es por casualidad. Yo soy de esos que ha estado aplicando masivamente la IA en mi día a día personal y profesional, para no perder un ápice de la productividad que nos exige este nuevo mundo, y voy a ser Mentor del Máster en IA Aplicada & Optimización de Procesos Productivos y podrás estar en contacto conmigo a través del "Chema Alonso´s Corner" que hemos creado en MyPublicInbox.

También habrá una sesión de Vídeo Conferencia en directo conmigo donde se hará un Q&A con todos los asistentes. Podrás preguntar, resolver dudas, preocupaciones o incertidumbres que tengas sobre este mundo. Así tendrás una sesión conmigo y un chat durante todo el Máster donde podrás debatir conmigo, con el resto de los alumnos, y con otros profesores, pero también acceder a noticias, tutoriales, artículos, y consejos para incrementar el impacto del tiempo que inviertas en formarte durante este Máster en IA Aplicada & Optimización de Procesos Productivos en tu vida personal y profesional. 
Todos los asitentes, además, tendrán 100 Tempos de MyPublicInbox para utilizarlos en la plataforma, para participar e interactuar con otros perfiles, pero sobre todo para usarlos en desarrollar su Perfil Público en MyPublicInbox y subir su exposición profesional a través de Internet. 

Mensaje final

Los cambios siempre dan miedo. Este mundo va muy rápido. Si estás pensando eso de "debería aprender" es mejor que lo hagas de una vez por todas. Cuando más tardes, más complejo será el cambio, la adaptación, y más grande será el salto de aprendizaje que deberás hacer. Mi consejo... "Big Problems First", y convierte lidiar con esta vorágine de cambios en una oportunidad para ti. Si quieres más información, apúntate para ir el día 15 de Noviebre a las 19:00 horas (de España) a la presentación del  Máster en IA Aplicada & Optimización de Procesos Productivos y decides luego.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


sábado, noviembre 07, 2026

MyPublicInbox News AI: El Agente AI que crea tu Dossier de Prensa para ti en MyPublicInbox

Una de las cosas que siempre he echado de menos es tener una recopilación de todo lo que se ha publicado de mí. Tener almacenadas las noticias, las webs, y las publicaciones que se hagan conmigo. Esto es algo que muchos de los que tenemos presencia en Internet solemos guardar en forma de enlaces, archivos PDFs generados de la publicación y cosas así. Pero quería tener una base de datos de todos ellos para poder buscarlos en un momento dado. Y eso hemos estado construyendo en MyPublicInbox para todos los Perfiles Públicos.
Se trata de CodeName: News AI, un Agente IA que navega por Internet para buscar las noticias de los Perfiles Públicos en MyPublicInbox para que puedan tener todos su propia base de datos de referencias, navegable, con posibilidad de hacer búsquedas, filtran, tener copia por si se borra la URL, o encontrar las URLs de las publicaciones en Internet que hablan sobre ti.

Los agentes están trabajando para llenar la base de datos, buscando por Internet así que todavía no están todas ni mucho menos, pero están generando ya contenido para todos los Perfiles Públicos, así que si tu eres uno de ellos, puedes entrar en la sección de Mi Impacto en Internet -> Dossier de Prensa y ver qué noticias se han cargado ya en tu perfil.
Si miras en los filtros podrás ver el número de noticias que tienes por año, pero también podrás filtrar por medio o fuente sabiendo cuántas referencias hay de cada una de ellas, por autor de la noticia, o por tipo de sentimiento de la publicación, y a la derecha te saldrá la lista con una pequeña reseña de la noticia, más las acciones que tienes con cada una de ellas.
En el detalle de las noticias tienes todas las opciones de lo que puedes hacer con tu Dossier de Prensa, para que tú tengas control de todas las referencias que salen de ti en Internet, y puedas analizarlo, gestionarlo o utilizarlo. Incluso solicitar la Desindexación o tu Derecho al Olvido.

Una vez que tienes la lista de noticias, puedes copiar el enlace a la noticia, navegar a ella en una ventana nueva, descargarte una copia del texto de la notica en PDF con la información, o leer la información en tiempo real post-procesada -.
Si la referencia a la publicación es errónea, puedes reportarlo también, para que tengas la información más curada posible, de tu dossier de prensa, que sólo verás tú como Perfil Público y nadie más.

Así, en este dossier de prensa tuyo y personal, tendrás también la posibilidad - como ya os he dicho antes - por buscar por cada uno de los temas que quieras. El objetivo es que puedas analizar, usar, o convertir en un activo tuyo toda esta información. 
A futuro, este dossier de prensa tendrá su propio MCP para que puedas utilizarlo como RAG de tus Agentes AI, que de lo que se trata es de que este sea un activo de todos y cada uno de los Perfiles Públicos de MyPublicInbox. Si quieres tener acceso a este servicio que es gratuito, sólo debes convertirte en un Perfil Público de MyPublicInbox y listo.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


jueves, noviembre 05, 2026

Jornada Técnica para Democratización de la Inteligencia Artificial para PyMEs: Getafe 10 de Noviembre

El próximo 10 de Noviembre, tendrá lugar en el Centro de Referencia Nacional de Desarrollo Informático y Comunicaciones  de Getafe (Madrid), sito en la Avenida de las Arcas del Agua, 2, 28905 Getafe, (Madrid), y dónde yo he dado muuuuchas charlas, tendrá lugar un evento muy especial, que han llamado "Cara A y Cara B de la IA: De los Mitos a la Práctica", para ayudar a las PyMes y a los profesionales autónomos y de empresas de pequeño y mediano tamaño a tirarse de lleno al mundo de la IA.
El objetivo de esta Jornada Técnica es desmitificar la Inteligencia Artificial y acercarla a la realidad del tejido empresarial y los profesionales del sector IT de las PyMes, huyendo de los discursos catastrofistas o puramente teóricos. Por ello, la jornada contrastará las inmensas oportunidades y ventajas competitivas de la IA con la necesidad ineludible de aplicar rigor, ética, ciberseguridad y cumplimiento normativo. 
Si quieres saber más sobre cómo la IA puede beneficiar tu negocio, te invitamos a unirte a estas V Jornadas Técnicas del sector IT en el Centro de Referencia Nacional de Desarrollo Informático y comunicaciones. Allí, tendrás a expertos del campo como Manuel S. Lemos, José Palanco de Pléxicus, Kiko Gámez, mi compañera de Cloudfare Alba Massa, o mis queridas Irene Gómez y Elena Gil, junto con David Santiago y Noelia Reyes, que debatirán sobre cómo aprovechar la IA para mejorar las operaciones de las Pymes. 

Figura 3: Ponentes de la Jornada

Las plazas son limitadas, que si has estado en alguno de mis eventos allí, ya conoces que el auditorio es pequeñito, por lo que debes registrarte cuanto antes para guardar tu sitio. Allí tendrás, además, la ocasión de poder comprar los libros de 0xWord, y todos los asistentes que vayan ese día, tendrán 100 Tempos gratuitos de MyPublicInbox.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


miércoles, noviembre 04, 2026

Cómo portar un proyecto de Azure a Cloudflare: Cómo lo hicimos con Weave.js de Inditex Tech Open Source

Cuando Inditex Tech Open Source, conocida por su cultura técnica, excelencia y comunidad sacó esta propuesta sabíamos que teníamos que colaborar y aportar nuestro granito de arena a la comunidad. Da gusto ver a una empresa española apostar por la tecnología, el talento y la innovación, y hacerlo con un propósito que va más allá de lo que construye: también comparte ese trabajo para que otros podamos aprender, experimentar y llevarlo un paso más allá.

Figura 1: Cómo portar un proyecto de Azure a Cloudflare.
Cómo lo hicimos con Weave.js de Inditex Tech Open Source

Esa forma de entender la tecnología encaja de lleno con el ADN de Cloudflare. Nosotros también creemos que compartir lo que aprendemos y contar abiertamente cómo construimos nuestra tecnología es parte del trabajo. De ahí nuestro blog de Cloudflare, donde entramos hasta la cocina de lo que hacemos, nuestra apuesta por la transparencia y un tier gratuito amplio y accesible para todos los desarrolladores del mundo.

Así que decidimos llevar esa afinidad al terreno que más nos gusta: construir. Y ahí apareció un reto a la altura, Weave.js, una herramienta para crear aplicaciones de colaboración en tiempo real, como pizarras colaborativas y editores de diagramas. Nuestra forma de contribuir sería explorar cómo llevarla a Cloudflare y compartir con la comunidad lo que aprendiéramos por el camino.


Al mirar todas las piezas el backend, el almacenamiento, la sincronización, la autenticación y la IA, nuestra primera pregunta técnica fue inevitable: 

«¿Cuánto tardaría en hacer funcionar todo esto en Workers?».

Nadie nos lo pidió. Lo hicimos porque nos picó el gusanillo y porque (seremos sinceros) en Cloudflare todos somos builders: nos gusta construir, probar ideas y hacer shipping, no dejarlas en una presentación. Y aquí teníamos un nuevo reto para poner todo eso en práctica. }:)

Lo interesante era comprobar cuánto podíamos simplificar el despliegue y la operación al tener todas las piezas en una misma plataforma: Workers para la lógica, D1 para los datos, Queues para las tareas en segundo plano y Access para la autenticación. Menos infraestructura que administrar y más tiempo para el producto. Y ahí entraban la «magia» de los Durable Objects para coordinar las salas en tiempo real, R2 para almacenar contenido sin cargos por transferencia de salida y Workers AI para integrar inferencia de baja latencia sin gestionar servidores de modelos.

Figura 3: El reto de migrar Weaver.js a Cloudflare

No se trataba solo de hacerlo funcionar, sino de explorar lo que permite hoy la plataforma: reducir complejidad, ajustar buena parte del coste al uso real y llevar las ideas antes a producción. Todo con una aplicación de verdad, no un «hola, mundo», y descubriendo por el camino qué encajaba, qué había que adaptar y dónde estaban los límites. Lo que os voy a contar hoy es esa aventura. Y os adelanto que fue más divertida ¡y accidentada! de lo que esperaba.

El punto de partida: el repo de Inditex tal cual

Lo primero que hice fue clonar los dos repositorios públicos (weavejs-backend y weavejs-frontend) y leer el código de arriba a abajo. La arquitectura original de Weave.js era la que podríais imaginar para una aplicación Node.js moderna y bien hecha:

Figura 4: Diagrama de arquitectura de Weave.js
  • Backend: Express.js corriendo en un servidor Node.
  • Almacenamiento: Azure Blob Storage para guardar el estado de las salas (documentos Yjs en binario) y los assets (imágenes, vídeos).
  • Base de datos: PostgreSQL para todo lo demás como salas, páginas, hilos de comentarios, chats o tareas de exportación.
  • Cola de trabajos: pg-boss, una librería que usa PostgreSQL como backend de colas para gestionar los trabajos asíncronos (generación de imágenes con IA, exportaciones a PDF, etc.).
  • Tiempo real: Azure Web PubSub para sincronizar el documento Yjs entre todos los clientes conectados a una sala y para el canal de eventos secundario (lo que llamábamos el "comm-bus").
  • Autenticación: better-auth con su propia tabla en PostgreSQL.
  • IA: Google Generative AI para la generación de imágenes.
  • Frontend: TanStack Start + Vite + Nitro, desplegado también en un servidor Node.
No está nada mal para una aplicación colaborativa en tiempo real. La gente de Inditex Tech lo tiene muy bien hecho. Pero desde mi perspectiva había una pregunta obvia: 

¿Podemos hacer todo esto con Cloudflare y sin tocar apenas el código del frontend?


El proyecto del Porting a Cloudflare

Como es un proyecto complejo, decidimos hacerlo por partes, así que antes de entrar en detalle de cada una de las partes, os dejo el resumen de lo que cambiamos. Cuáles fueron los cambiso que realizamos pieza por pieza para que Weave.js siguiera funcionando perfectamente, pero en Cloudflare.

Figura 5: El mapa del cambio

Y ahora, vamos con cada una de las partes, que hay mucho que contar de todas y cada una de ellas, como vais a poder leer aquí.

De Express a Hono: el cambio más fácil

Este fue el cambio más agradable de todos. Hono es un framework HTTP tan parecido a Express que la migración de rutas fue casi mecánica. La diferencia importante es el modelo de ejecución. Express espera vivir en un proceso Node.js persistente. Hono está diseñado para correr en un Worker de Cloudflare, es decir, sin estado global entre peticiones, con acceso a los bindings de la plataforma (env.DB, env.IMAGES_BUCKET, etcétera) directamente desde el contexto de Hono.
// Antes: Express
app.get('/rooms/:roomId/images', requireAuth, async (req, res) => {
  const images = await db.query('SELECT ...');
  res.json(images);
});

// Después: Hono en Workers
imagesRouter.get('/rooms/:roomId/images', requireAuth, async (c) => {
  const result = await c.env.DB.prepare('SELECT ...').all();
  return c.json(result.results);
});
El router de Hono se monta en el Worker, y el Worker exporta los handlers de fetch y queue. Nada más.

De Azure Blob Storage a R2: sin egress, sin dramas

Azure Blob Storage y R2 son conceptualmente idénticos: almacenamiento de objetos con clave. La migración fue directa. Lo que antes era esto:
await blobClient.uploadData(buffer, { 
    blobHTTPHeaders: { blobContentType: contentType } });
Pasó a ser esto:
await c.env.IMAGES_BUCKET.put(key, buffer, { httpMetadata: { contentType } });
Creamos cuatro buckets en R2:
  • weavejs-rooms: estado binario de los documentos Yjs
  • weavejs-images: imágenes subidas por los usuarios
  • weavejs-videos: vídeos
  • weavejs-generated-images: imágenes generadas por IA
La gran ventaja: R2 no cobra egress. En Azure, cada vez que un cliente descarga una imagen, pagas. En R2, no. Para una aplicación colaborativa donde se sirven imágenes constantemente, eso no es un detalle menor.

De PostgreSQL a D1 + Durable Objects: aquí sí que hay que pensar

Este fue el cambio más interesante. Y el que más hay que entender bien. D1 es un SQLite gestionado por Cloudflare. Perfecto para datos relacionales que no necesitan fuerte consistencia distribuida en tiempo real: salas, páginas, hilos de comentarios, metadatos de imágenes. Definimos las migraciones en SQL y listo.
CREATE TABLE rooms (
  id TEXT PRIMARY KEY,
  name TEXT NOT NULL,
  kind TEXT NOT NULL DEFAULT 'showcase',
  status TEXT NOT NULL DEFAULT 'active',
  created_at TEXT NOT NULL,
  updated_at TEXT NOT NULL
);
Pero hay un tipo de dato que D1 no puede manejar bien: el estado de conexión en tiempo real. ¿Qué clientes están conectados ahora mismo a qué sala? Eso requiere consistencia fuerte, una sola fuente de verdad. Para eso usamos un Durable Object.

El ConnectionRegistry es un DO singleton que usa SQLite interno (la API ctx.storage.sql de los DOs de nueva generación) para rastrear las conexiones activas. Una sola instancia, en un solo lugar del planeta, con garantía de consistencia fuerte. Exactamente lo que necesitas para algo así.

De Azure Web PubSub a Durable Objects: el cambio más grande

Azure Web PubSub era el corazón de la sincronización en tiempo real. Cada sala tenía un "hub" donde se publicaban y suscribían los eventos del documento Yjs. Reemplazarlo fue el reto más técnico de toda la migración. 

La solución: dos Durable Objects por sala.

1.- RoomSync: el documento Yjs vivo

RoomSync es el DO que mantiene el documento Yjs de cada sala. Implementa el protocolo y-websocket directamente, de forma que el cliente no sabe que está hablando con un Worker en lugar de con el servidor Node original.

Cuando un cliente se conecta, el Worker negocia la URL del WebSocket y el cliente conecta directamente al DO. El DO usa la Hibernation API de Cloudflare, lo que significa que cuando no hay mensajes, el DO hiberna y no consume CPU. Los WebSockets se mantienen abiertos sin coste.

El estado del documento Yjs se persiste en R2 cada vez que hay cambios, para que sobreviva reinicios del DO.
async webSocketMessage(ws: WebSocket, message: string | ArrayBuffer) {
  // Protocolo y-websocket: sync, update, awareness...
  const data = typeof message === 'string'
    ? new TextEncoder().encode(message)
    : new Uint8Array(message as ArrayBuffer);
  // broadcast a todos los clientes conectados
  for (const client of this.ctx.getWebSockets()) {
    if (client !== ws && client.readyState === WebSocket.READY_STATE_OPEN) {
      client.send(data);
    }
  }
}

2.- CommBus: el canal de eventos secundario

Además del documento Yjs, la aplicación tiene un segundo canal de WebSocket para eventos más ligeros: notificaciones de que una imagen se ha procesado, progress de exportaciones, heartbeats. A esto lo llamábamos el "comm-bus".

CommBus es otro DO por sala, más simple que RoomSync. Solo hace broadcast de mensajes JSON a todos los clientes conectados. También usa Hibernation API.

Lo más interesante: con Azure Web PubSub, el backend publicaba eventos en el hub y Azure se encargaba del fanout. Con los DOs, el Worker llama directamente al DO de la sala y el DO hace el fanout. Sin intermediarios, sin latencia adicional de round-trip a Azure.

De pg-boss a Cloudflare Queues: colas sin PostgreSQL

En el caso de pg-boss éste usaba PostgreSQL como backend de cola. Los trabajos asíncronos (generación de imágenes con IA, transformaciones de imágenes, exportaciones a PDF) se encolaban en una tabla de PostgreSQL y un worker de Node los procesaba.

En nuestros Workers, esto se convierte en Cloudflare Queues. El producer es el Worker del backend: cuando llega una petición de exportación o generación de imagen, encola el mensaje y devuelve un 202 Accepted con un taskId.

await c.env.WORKLOADS_QUEUE.send({ jobType: 'generate-images', taskId, roomId, payload: body, }); return c.json({ taskId, status: 'pending' }, 202);

El consumer es el mismo Worker, pero en su handler de queue:
 
async queue(batch: MessageBatch%lt;WorkloadMessage%gt;, env: Env) {
  for (const message of batch.messages) {
    await handleWorkload(message.body, env);
    message.ack();
  }
}

El estado de cada tarea se guarda en D1 (tabla tasks), y el frontend hace polling hasta que el estado cambia a completed.

De better-auth a Cloudflare Access: autenticación sin base de datos

Vamos con better-auth que también estaba en PostgreSQL e implicaba gestionar sesiones, tokens de refresco, tablas de usuarios... Todo eso desapareció:

Pusimos Cloudflare Access delante de la aplicación.

Access gestiona el login (con el proveedor de identidad que quieras: Google, GitHub, OTP, passkeys) y emite un JWT firmado que llega a cada petición como la cookie CF_Authorization o el header Cf-Access-Jwt-Assertion. El backend solo tiene que verificar ese JWT:

const { payload } = await jwtVerify(token, JWKS, {
  issuer: env.CF_ACCESS_TEAM_DOMAIN,
  audience: env.CF_ACCESS_AUD,
});
c.set('userId', payload.sub ?? payload.email);

Sin tabla de usuarios. Sin tabla de sesiones. Sin refresh tokens. El JWKS se rota automáticamente cada seis semanas y jose lo gestiona con createRemoteJWKSet, que cachea y rota transparentemente. No está mal para eliminar toda una capa de complejidad.

De Google Generative AI a Workers AI: IA en el edge

La generación de imágenes con IA pasó de llamar a Google Generative AI desde un servidor Node a usar el binding AI de Workers, con los modelos FLUX disponibles en Workers AI, enrutado todo a través de AI Gateway.
const result = await env.AI.run(
  '@cf/black-forest-labs/flux-1-schnell',
  { prompt, steps: 8 },
  { gateway: { id: env.AI_GATEWAY_ID, skipCache: false } }
);

AI Gateway añade logging, caché semántica y control de costes sin cambiar una línea del código de inferencia. Si el mismo prompt ya se generó antes, devuelve la imagen cacheada en milisegundos.


Para los modelos que no están en Workers AI (como gpt-image-1 de OpenAI) seguimos usando la API directa, pero también enrutada a través de AI Gateway para tener el mismo sistema de observabilidad.



El chat con IA también pasó a Workers AI, usando el modelo llama-3.3-70b-instruct-fp8-fast con streaming. El Worker devuelve el ReadableStream de SSE directamente desde el binding, sin transformaciones intermedias.

De Node.js con sharp a Cloudflare Images: transformaciones sin binarios nativos

Aquí nos encontramos con la limitación más dura del modelo de Workers: no puedes ejecutar binarios nativos. sharp, skia-canvas, ffmpeg son todos binarios de Node.js que no pueden correr en un isolate de V8. Para las transformaciones de imagen básicas (flip, escala de grises, eliminar fondo) usamos el Cloudflare Images binding, que hace las transformaciones de forma nativa en el edge:
  
const result = await env.IMAGES
  .input({ imageKey: `${roomId}/${imageId}` })
  .transform({ flip: 'h' })
  .output({ format: 'image/webp' });

Para las operaciones más complejas que no soporta el binding, como la inversión de colores, el Worker devuelve una señal al frontend indicando que debe procesar la imagen client-side usando la Canvas API. No es perfecto, pero funciona. Podríamos haber implementado esta funcionalidad con Cloudflare Containers, pero dejamos esto para el roadmap futuro.

Las exportaciones a PDF y las capturas de página para la presentación son el único caso pendiente. Esas tareas se encolan y quedan marcadas como requires-external-processing. La solución pendiente es desplegar un Cloudflare Container que ejecute el código Node.js original de exportación y escriba el resultado de vuelta a R2.

El frontend: TanStack Start en Workers con Nitro

El frontend ya usaba TanStack Start + Vite + Nitro. Nitro tiene un preset cloudflare_module que compila el servidor SSR directamente a un módulo de Worker. Un único cambio de configuración:
NITRO_PRESET=cloudflare_module vite build --mode production
Y el resultado es un index.mjs listo para wrangler deploy, con los assets estáticos en .output/public/ servidos desde Workers Static Assets. Los únicos cambios que tuvimos que hacer en el frontend:
  • Eliminar sharp (no puede importarse en un Worker): añadimos un stub que lanza un error descriptivo.
  • Reescribir el middleware de "coming soon" para usar la Web Crypto API (crypto.subtle) en lugar de crypto.createHmac de Node.
  • Reemplazar useGetAzureWebPubSubProvider por useGetWebsocketsProvider, que usa WeaveStoreWebsockets en lugar del cliente de Azure.
Ese último cambio fue casi poético en su simplicidad: una sola línea diferente en el componente de la sala.

Los bugs que encontramos por el camino

La migración no fue perfecta desde el primer momento. Os cuento los más divertidos.
  • El race condition del WeaveProvider. El SDK de Weave llama a registerStore() dentro de un método start() asíncrono. Si React desmontaba el componente <WeaveProvider> antes de que start() terminara —lo que pasaba cuando cambiaba el key del componente al resolverse la primera página— destroy() se llamaba antes de que this.store estuviera asignado. 
Resultado: TypeError: Cannot read properties of undefined (reading 'disconnect'). La solución: no montar <WeaveProvider> hasta que actualPageId esté definido, para que la key sea estable desde el primer render.
  • La identidad del usuario. Las salas que había creado con el sistema original de better-auth usaban un UUID v4 generado por la propia aplicación. Cloudflare Access usa el sub del JWT, que es el UUID de la identidad en Access: otro valor completamente distinto. Así que al arrancar con Access, el backend no encontraba mis salas en D1 porque los IDs no coincidían.
La solución fue buscar el sub de mi usuario de Access mediante la API de Cloudflare y lanzar una query de migración directamente en D1 para reasignar los room_users al nuevo userId. Desde fuera me imagino que esto suena a obviedad, pero cuando estás depurando a las 11 de la noche y las salas "desaparecen"... no es tan obvio. }:)
  • Las rutas del frontend apuntando a endpoints inexistentes. Al auditar todos los endpoints descubrimos que varios frontends llamaban a rutas que en el nuevo backend no existían: /rooms/:roomId/chats en lugar de /rooms/:roomId/ai/chats, el endpoint de presentación en /api/v1 en lugar de /api/v2, las rutas de templates con scope de sala que el backend global no tenía... Una auditoría completa de todos los apiFetch del frontend contra todos los routers del backend reveló diez discrepancias. Las corregimos todas.
El resultado final

La arquitectura final tiene exactamente dos Workers desplegados:
  • Backend: Hono + D1 + R2 (×4) + Durable Objects (×3 clases) + Queues + Workers AI + Cloudflare Images + Cloudflare Access.
  • Frontend: TanStack Start + Nitro + Workers Static Assets.
Sin servidores que escalar. Sin bases de datos que parchear. Sin factura de Azure Web PubSub por conexiones WebSocket. Sin egress de Azure Blob Storage.

Figura 8: Arquitectura de Weave.js en Cloudflare

Y todo desplegable con dos comandos:
  • cd backend && npm run deploy
  • cd frontend && npm run deploy
¿Mereció la pena? Para mí, rotundamente sí. Y no solo como ejercicio técnico. La respuesta a mi pregunta inicial "¿cuánto tarda en correr esto en Workers?" resultó ser "un par de días quemando tokens". Para una aplicación colaborativa en tiempo real con sincronización CRDT, IA generativa, colas de trabajos asíncronos y autenticación Zero Trust.

Lo más valioso que me llevé no es el código. Es la comprensión de cómo los Durable Objects resuelven el problema de estado distribuido en tiempo real de una forma que ningún servicio gestionado externo puede igualar: el estado vive en el edge, co-localizado con los clientes, sin round-trips a una región central.

Eso, para una aplicación de colaboración en tiempo real, es EL detalle.

Y dicho esto: si alguien de Inditex Tech Open Source está leyendo esto y quiere charlar sobre la migración, ya sabéis dónde encontrarme, que seguro que podemos hacer más proyectos de estos juntos.

Saludos,

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)  


jueves, octubre 29, 2026

Cómo aprender a gestionar los fracasos para alcanzar los sueños: El sueño americano en Prime

Hace un tiempo os hablé de una película que me había encantado, porque hablaba del fracaso. Un tema del que no es la primera vez que os he hablado, que hay muchas veces que salen mal las cosas. Aprender a gestionar los fracasos es fundamental. Cómo los superes y lo qué hagas después de cada uno de ellos marca quién eres y quién vas a ser. Todos los días fracasamos de alguna manera. Desde mini fracasos en forma de olvidos, o tareas mundanas como derramar el café, hasta grandes fracasos en forma de expectativas no cumplidas o proyectos que no salen. Cómo gestiones esas mini derrotas, marcará como gestionas las grandes.
De eso hablo mucho con mis hijas, y estos días he tenido la oportunidad de ver una película, que os más que recomiendo, "El Sueño Americano" que habla de eso mismo. De todos los fracasos que hay que acumular hasta lograr el éxito. No conozco a nadie que le haya ido bien la vida sin tener su buena ración de fracasos acumulados y gestionados. Hay que perder muchos partidos para que algún día se pueda ganar un campeonato. Se deben perder muchos puntos, para aprender a ganarlos.
El mundo del deporte es una buena representación del éxito y la gestión del fracaso, y por eso con mis hijas hablo mucho de ello. Les cuento mis fracasos, mis caídas, mis derrotas personales, como cuando compilé algunas de las más relevantes en mi historia dentro del discurso que di a los egresados de la Universidad Carlos III.

Si sólo ves el final de la historia, es decir, la parte del éxito y el glamour de la alfombra roja, el podium o el sitio privilegiado en el palco, pero no ves el camino de fracasos, nunca podrás salir de la "fantasía" del éxito fácil, sin esfuerzo, con suerte, o regalado. No hay mayor mentira que la que uno se cuenta a sí mismo, ni barrera más insalvable que decirse a uno mismo "yo no puedo" y ponerse un techo de cristal.
La película, que so confieso que me hizo llorar al final, me recordó a muchos momentos de mi vida. A cuando con Rodol nos metimos para montar Informática 64 en el primer piso que pudimos alquilar, pintando las paredes con restos de pintura que tenía de chapuzas que había hecho yo de pintor. Así, cada habitación tocó de un color y una de ells fue de color rosa. Era lo que nos podíamos permitir.

En el "El Sueño Americano" - que no os quiero hacer spoiler -, un par de apasionados por el basket tienen el sueño de llevar a los mejores jugadores franceses a la NBA. Saben mucho de basket, y luchan por hacerlo realidad, sufriendo por el camino muchos de los fracasos que seguro que vosotros habéis tenido alguna vez. Falta de apoyos, decepciones por traiciones en el mudo de los negocios, y poner hasta el último Euro en pro de hacer de su pasión un trabajo.

Los protagonistas de la película son un tendero de un videoclub y un limpiador del aeropuerto de Orly en Francia con mucha pasión por el baloncesto. En nuestro caso, cuando decidimos montar Informática 64 yo había trabajado toda mi vida de pintor, barnizador, albañil y profesor particular. Rodol, de cosas similares, y no teníamos ni contactos, ni enchufes, ni padrinos. Nuestros contactos fueron los anuncios de los periódicos de empresas a los que yo personalmente llamaba haciendo venta fría los viernes para buscar reuniones para poder conseguir trabajo. La de veces que me rechazaron, colgaron el teléfono o se pusieron bordes conmigo. Pero... era sólo un punto más.

Hoy en día, habiendo logrado mucho más de lo que soñé en aquellos años, no se me olvida nunca de donde vengo, y junto con mis cómics, guardo el cartel de Informática 64, que un día os publiqué en mi Instagram.


Me ha tocado de la película otro aspecto que los protagonistas tenían que sufrir, que era la falta de conocimiento de la lengua inglesa. ¿Cómo vas a llevar a un jugador a la NBA si no hablas inglés? En mi caso, como habéis podido vivir en primera persona, cuando quise ir a "mi NBA personal" que eran DefCON y BlackHat, tuve que lidiar con el mismo problema. Con 33 años tuve que comenzar a aprender inglés. En su caso con una profesora "muy especial" como veréis en la película.

Las primeras conferencias las hice de memoria, mientras aprendía inglés con unos profesores "muy especiales", viendo series para jóvenes como Wonder Woman, Robocop o SuperBoy, sin subtítulos que eso es muy importante. Leyendo libros de Spiderman o Star Wars para jóvenes, y escuchando toda la música que pude en inglés. Aún sigo con esa disciplina para seguir aprendiendo...

En el "El Sueño Americano" sacan otra parte fundamental de su viaje, que son los compañeros. Por supuesto, yo he tenido la suerte de tener a mi compañero, que siempre ha estado ahí cuando nos ha ido mal. Algunas veces era yo el que tenía que buscar las soluciones, otras era él el que decía: "No te preocupes, yo puedo ocuparme de esto. Lo podemos hacer." Hoy, más de 35 años después de que nos conociéramos, creo que estar juntos en lo malo, nos hizo llegar a donde llegamos. Y saber que, como los protagonistas de "El sueño americano", aunque estuviéramos lejos, podíamos apoyarnos el uno en el otro, fue importantísimo. Y lo vivimos con muchos amigos que nos acompañaron en el proceso.

Figura 5: Nosotros teníamos el SOCtano con el rellano de las escalaras
desde donde hablaba a mis compañeros. Ellos tenían una trastienda,

No os quiero contar más detalles de la película, porque creo que merece la pena que te sorprenda cuando la veas, que la tienes ahora en AMAZON PRIME -, pero algo que hacen los protagonistas me hacía recordar mis inicios. Por supuesto, la mentalidad de buscar una solución a cada problema y no un problema para cada solución - huye de esa gente en tu vida -, y de hacerlo sabiendo que siempre hay una forma, aunque pueda ser una locura. Si parece que no hay solución es que es el momento de ser creativo, porque siempre hay algo que se puede intentar, aunque volvamos a fracasar. 
No os quiero contar mucho, pero sí me gustaría recalcar el título del artículo. Hay que aprender a gestionar los fracasos, porque eso es lo que marcará si vas a tener éxito en tus proyectos. Por supuesto, para gestionar los fracasos vas a tener que trabajar mucho - mucho más que los demás tal vez -, vas a tener que gestionar emociones, vas a tener que buscar apoyos, vas a tener que ser perseverante, vas a tener que aprender a adaptarte, vas a tener que enfrentarte a cosas que no imaginabas antes. Pero si aprendes a gestionar esos fracasos... en algún momento, estarás más que preparado para que llegue tu objetivo.

Si eres de los que lucha por sus sueños, no te pierdas "El Sueño Americano", es una película educativa y emotiva, que te cuenta lo duro que es triunfar y tener éxito. Para verla con tus hijos, si eres como yo de los que está todo el día intentando que se formen para gestionar los problemas en la vida.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  

viernes, octubre 23, 2026

Cloudflare Immerse Santiago de Chile - 10 de Noviembre

Cuando aún estoy con la resaca de Cloudflare Connect, ya hay que pensar en la siguiente parada. Antes ya sabéis que tengo otros eventos en Europa (España, Lisboa y Rep. Checa), pero hoy os dejo información para el Cloudflare Immerse en Santiago de Chile, que tendrá lugar el próximo día 10 de Noviembre, y para el que estaré volando para participar allí.
La agenda del evento comienza a las 08:00 de la mañana, así que hay que madrugar para llegar a tiempo y no perderse nada, que luego yo salgo directamente para el aeropuerto para regresar a Europa, así que regístrate y mete en la agenda el evento con tiempo para llegar pronto.
La lista de los ponentes es larga, y allí estarán mis compañeros de aventuras en la región, con Max Pablos, Pedro Suárez, Joseph Collura, Bert Milán, Christine McEdulf y Sergio Muñoz Carrillo, que participarán en las charlas.
Y por supuesto, también estaremos, dando las keynotes principales, Antonieta va de Meer G., que es abogada especialista en estrategia legal y gobernanza de IA, y yo, hablando del impacto de la Inteligencia Artificial en el mundo de la Ciberseguridad.


Como alguno me lo habéis pedido, me llevaré algunos libros de los míos a Chile, así que si no quieres quedarte sin el tuyo, puedes comprarlo antes online en 0xWord, y en las observaciones poner que lo queréis recoger en el Cloudflare Immerse de Chile, y yo os lo llevo, os lo dedico y os lo entrego. Regístrate ya, que las plazas son limitadas.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


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