Shared posts

29 May 09:25

Irlanda prohibirá los productos procedentes de los asentamientos israelíes en Cisjordania a partir de julio (inglés)

by carakola

El Gobierno de Irlanda, crítico de la guerra de Israel en Gaza, prometió por primera vez en octubre de 2024 imponer sanciones a los asentamientos israelíes. Desde entonces, la legislación se ha visto frenada, por un lado, por la presión de los políticos de la oposición, que pretendían ampliar la prohibición también al comercio de servicios, y, por otro, por los grupos de presión de empresas internacionales que buscaban derogar el proyecto de ley.

etiquetas: asentamientos israelíes, irlanda, genocidio de gaza, sanciones

» noticia original (www.reuters.com)

29 May 09:14

OZO y su ADV

Hoy llevo comprando el pan, pasteles y tartas para celebraciones en la misma panadería desde hace 5 años, la dueña es como de la familia y todos los días me tiene preparado el pan. Hoy me he dejado la cartera en casa y le he dicho que se lo pagaba mañana, ha contestado: "Ni de coña"... Me ha tocado ir a casa a por 75 cts. ADV

29 May 09:14

Las pensiones en España: cuando los números no cuadran (y cada vez cuadran menos)

by Carlos Lopez
Hay conversaciones que solemos aplazar. La del dentista, la del médico, la de hacer testamento. Y luego está la de las pensiones: esa que todos sabemos que hay que tener, pero que siempre dejamos para más adelante. El problema es que «más adelante» se está acabando. Un reciente estudio del CEU CEFAS, coordinado por Alejandro ... Leer más
29 May 09:13

Tu jefe no sabe lo que haces. Por eso manda

by Tommaso Biagi
Una estructura que separa a quien decide de quien sabe produce sistemáticamente ignorancia en los decisores e impotencia en los que tienen el conocimiento.

Temas principal: Opinión

Leer artículo completo
29 May 09:13

Pánico en las élites occidentales: ¿ha llegado la hora de la ofensiva ciudadana?

by Juan Laborda
Si ellos tienen sus centros de datos, nosotros tenemos la capacidad de organización. Si ellos tienen sus algoritmos, nosotros tenemos la solidaridad. Si ellos tienen el capital, nosotros tenemos los números.

Temas principal: Economía

Leer artículo completo
29 May 09:05

Nuestros antepasados indoeuropeos nos desprecian

by Mariana Toro

He gozado como un guerrero prehistórico en plena orgía de aplastar cráneos con la lectura de Lengua madre, un ensayo de divulgación de Laura Spinney que, a vista de lomo, no debería despertar más pasiones que un seminario universitario con pausa para el café a media mañana. El libro resume todo lo que se sabe sobre el indoeuropeo, sin rebajar el rigor lingüístico ni la complejidad de las disciplinas involucradas, que van de la filología antigua y la historia, a la genética, la arqueología y la química. Supongo que no se lo estoy vendiendo bien. No sé cuántos de ustedes han dejado ya de leerme ni cuántos están a punto de hacerlo por no dejar el párrafo a medias. Si queda alguien ahí después del punto y aparte, confío en que no se contenten con leerme a mí y corran a buscar el libro que mejor explica las turbulencias de hoy.

Empecemos por lo básico, la llamada «hipótesis indoeuropea». A mediados del siglo XVIII, Williams ‘Oriental’ Jones obtuvo una plaza de juez del Imperio británico y fue destinado a la India, su lugar soñado. Además de jurista, Jones era filólogo y estudioso de las lenguas. Ya había aprendido árabe y persa, había traducido a varios poetas medievales al inglés y, nada más llegar a la India, se puso a estudiar sánscrito, el equivalente indio al latín: una lengua muerta de la que proceden las lenguas indias modernas (el hindi, lengua oficial hoy) y que se mantiene en la liturgia religiosa porque los Vedas, los libros sagrados del hinduismo, están escritos en ella.

Jones debía de tener un oído finísimo, porque detectó enseguida unas semejanzas con el griego antiguo y el latín, tanto en el vocabulario como en la gramática. Los números, por ejemplo, suenan muy parecidos en las tres: unus – duo – tres en latín, ena – dyo – tría en griego y ekam – dve – trini en sánscrito. Tras años de estudio, concluyó que esos parecidos solo podían explicarse por un antepasado común, una lengua desaparecida antes de la invención de la escritura (o invenciones: la escritura se ha inventado en varios sitios y momentos históricos diferentes y sin relación entre sí) que llamó indoeuropeo.

Desde entonces, los lingüistas han recorrido un camino lento y frustrante de reconstrucción de esa lengua primigenia, llegando al consenso de que la mayoría de las lenguas habladas hoy proceden de ella: todas las europeas, salvo el euskera y el húngaro, y muchas asiáticas, como el persa, el armenio y el hindi. Dos tercios de la humanidad hablan una lengua indoeuropea. Hasta hace veinte años, poco más se sabía de ella. Los avances eran muy lentos porque el método de reconstrucción exigía unas operaciones muy minuciosas basadas en el estudio de los documentos escritos más antiguos, a partir de lo cuales se proyectaban raíces léxicas, estadios primitivos de lenguas muertas sucesoras del indoeuropeo. Así, hasta llegar al indoeuropeo. Hoy se ha reconstruido un corpus de unas 1.600 palabras indoeuropeas que, en las convenciones científicas, se escriben con un asterisco, para indicar que no hay registro escrito de ninguna de ellas.

Dos tercios de la humanidad hablan una lengua indoeuropea

No se sabía quiénes fueron los hablantes de esa lengua, ni cuándo se habló ni dónde ni cómo se expandió. Aún hoy hay una disputa: aunque la mayoría de los expertos creen que se difundió del oeste al este, es decir, de Europa a la India, un pequeño grupo de científicos (apoyados por el gobierno nacionalista indio) sostiene que fue al revés, que salió de la India y llegó a Europa. Hasta que una revolución científica cambió el panorama. En veinte años, se ha aprendido más sobre el indoeuropeo que en todo el tiempo anterior, y lo que se sabe es fascinante.

A los esfuerzos eruditos de los lingüistas se han añadido los de los genetistas, capaces de analizar con mucha finura el ADN antiguo y de emparentar y rastrear huesos de hace miles de años, y los avances de la química aplicados a la arqueología, que permiten conocer la dieta de un individuo estudiando los isótopos de su placa dental. Esto es importantísimo: saber si un individuo de hace 10.000 años bebía leche o tomaba queso o bebía alcohol es determinante para saber cómo era la cultura en la que vivía.

Un ejemplo hipotético de lo poderoso que es esto: el arqueólogo puede determinar si esa cultura conocía el queso, lo cual allana el camino al lingüista para determinar si tenían o no una palabra para «queso». Es importante si la palabra es vernácula o un préstamo, pues lo primero significaría que aprendieron a hacer queso por su cuenta, y lo segundo, que un grupo humano de otra lengua les enseñó a hacer queso y les prestó la palabra para llamarlo. Esto permite establecer relaciones entre lenguas y determinar cómo se mueven y se imponen unas a otras. Por último, el genetista puede determinar si ese individuo tiene parientes en otro yacimiento, lo cual indicaría cómo se mezclaron esos grupos, quizá para formar una cultura híbrida.

Si no encuentran esto fascinante yo no puedo hacer más por ustedes, están perdidos para la causa de la humanidad.

Aquí viene el redoble de tambor: tras procelosos estudios y hallazgos y disputas en congresos, se ha planteado una hipótesis desconcertante: el protoindoeuropeo, la lengua más antigua que el indoeuropeo, de la cual este procede, era un idioma hablado por un grupo de unas cien personas. Cien nómadas que vivían en las llanuras de lo que hoy es Ucrania, al este del Dniéper, en ese trozo de tierra hoy bombardeado e invadido por Rusia. Su expansión, su comercio, su descendencia y sus ansias de recorrer mundo llevaron a que ahora yo escriba esto con palabras y estructuras gramaticales directamente heredadas de las que usaban ellos.

Si tres quintos de la humanidad hablamos en esencia una misma lengua que ha mutado de cientos de maneras posibles, ¿a qué vienen los miedos al Coco de los inmigrantes? ¿Qué esencias tememos perder, si somos el resultado de mil cruces y bastardías procedentes de un mismo origen, un puñado de tipos de las estepas pantanosas del este de Europa? ¿A qué ficción endeble y fugaz nos aferramos? Leer Lengua madre hace que todas las diatribas racistas y lacrimosas de hoy suenen vacuas. Nuestros antepasados, los hablantes del indoeuropeo, nos mirarían con asco: menuda civilización de castillos de naipes, dirían. Tienen de todo y lo temen todo.

Hay que estar a la altura de esos ancestros. Hay que espabilar.

La entrada Nuestros antepasados indoeuropeos nos desprecian se publicó primero en Ethic.

29 May 09:00

La inteligencia artificial no optimizará tu empresa: la obligará a reconstruirse

by Enrique Dans

IMAGE: A person walks from a chaotic, paper-filled office into a bright, futuristic space where AI systems organize data and decisions, symbolizing the shift from outdated processes to intelligent workflows

Durante los dos últimos años, las empresas han estado haciéndose la pregunta equivocada: ¿cómo usamos la inteligencia artificial en nuestros procesos?

Al principio tenía sentido. Cuando aparecieron los grandes modelos de lenguaje, el instinto era natural: tomar lo que ya existía, como workflows, funciones, cadenas de decisión, etc. e intentar acelerarlo. Añadir copilots. Añadir asistentes. Añadir capas de automatización. Mejorar la productividad.

Pero, como hemos visto, ese enfoque no escala. Como argumenté en mis artículos anteriores, la inteligencia artificial empresarial no ha fracasado porque la tecnología no funcione. Ha fracasado porque intentamos colocarla en la capa equivocada. Los grandes modelos de lenguaje nunca fueron diseñados para dirigir una empresa, y encajarlos dentro de procesos existentes no cambia ese desajuste estructural.

Ahora que el entusiasmo inicial ha chocado con la realidad, empieza a emerger otra pregunta, silenciosamente pero de forma inequívoca: ¿y si el problema no es cómo usar inteligencia artificial en nuestros procesos, sino que nuestros procesos nunca fueron diseñados para la inteligencia artificial?

El regreso de una vieja idea (pero esta vez de verdad)

En los años noventa, la reingeniería de procesos de negocio (Business Process Reengineering, o BPR) prometía algo radical: rediseñar las empresas alrededor de sistemas de información en lugar de limitarse a superponer tecnología sobre workflows existentes. La idea era potente, pero la ejecución fue desigual. Muchas iniciativas acabaron siendo reorganizaciones costosas con poco impacto duradero, en parte porque los sistemas subyacentes seguían siendo rígidos, fragmentados e incapaces de adaptarse en tiempo real.

Esta vez es diferente.

Entonces, los sistemas eran pasivos. Almacenaban información, aplicaban reglas y apoyaban decisiones tomadas por humanos. Hoy, los sistemas empiezan a ser activos: pueden generar, evaluar, coordinar y, cada vez más, actuar. Ese cambio altera completamente la ecuación. Significa que ya no estamos simplemente digitalizando procesos: estamos redefiniendo qué es un proceso.

La investigación más reciente de McKinsey sobre adopción de inteligencia artificial refuerza exactamente este punto: aunque el uso es masivo, el impacto real se correlaciona fuertemente con el rediseño de workflows, no simplemente con desplegar herramientas. Las organizaciones que replantean cómo se redefine el trabajo, y no solo con que tecnología se lleva a cabo, son las pocas que están viendo mejoras medibles.

En otras palabras, la promesa original del BPR está reapareciendo, pero ahora la tecnología sí puede sostenerla.

Por qué la mayoría de los procesos son incompatibles con la inteligencia artificial

La verdad incómoda es que la mayoría de los procesos empresariales actuales no son solo ineficientes. Son estructuralmente incompatibles con el tipo de sistemas en que la inteligencia artificial se está convirtiendo.

Son:

  • Fragmentados: repartidos entre herramientas, equipos y silos de datos.
  • Secuenciales: construidos alrededor de traspasos y retrasos.
  • Pobres en contexto: dependen de individuos para reconstruir el estado.
  • Latentes en la toma de decisiones: optimizados para revisión, no para acción.
  • Diseñados para humanos: asumen que la cognición, la memoria y la coordinación son escasas.

Estas características tenían sentido en un mundo donde el factor limitante eran las personas. No lo tienen en un mundo donde los sistemas pueden mantener contexto, aplicar restricciones y operar de forma continua.

Deloitte resume bien esta tensión en su análisis reciente sobre inteligencia artificial agéntica: muchas organizaciones están intentando automatizar procesos diseñados para humanos en lugar de replantear el propio trabajo. El resultado es previsible: aumenta la complejidad, pero los resultados no mejoran proporcionalmente.

No es un problema de herramientas. Es un problema de diseño.

La inteligencia artificial no optimiza procesos: los deja al descubierto

Uno de los patrones más consistentes en las iniciativas de inteligencia artificial empresarial es este: cuanto más intentas aplicar inteligencia artificial a un proceso existente, más visibles se vuelven las limitaciones de ese proceso.

Lo que antes estaba oculto detrás del esfuerzo humano pasa a hacerse explícito:

  • datos ausentes
  • reglas inconsistentes
  • propiedad difusa
  • trabajo duplicado
  • bucles de retroalimentación lentos

En ese sentido, la inteligencia artificial se comporta menos como una capa de optimización y más como una herramienta de diagnóstico. Revela la distancia entre cómo una empresa cree operar y cómo opera realmente.

Por eso tantos pilotos se atascan. No porque falle el modelo, sino porque el proceso en el que se inserta no puede absorber lo que el modelo produce. Como ha señalado el MIT, el desafío no consiste simplemente en adoptar inteligencia artificial, sino en rediseñar las organizaciones para que realmente puedan utilizarla eficazmente.

Y eso lleva a una conclusión mucho más incómoda: el factor limitante ya no es la tecnología. Es la empresa.

De procesos a sistemas

Si la fase anterior de la inteligencia artificial empresarial consistía en añadir inteligencia a tareas, la siguiente consistirá en rediseñar sistemas para que la inteligencia esté integrada desde el principio.

Ese cambio lo altera todo. En lugar de preguntar “¿cómo automatizamos este paso?”, las empresas tendrán que preguntarse:

«¿Por qué existe este paso?»
«¿Cómo sería este proceso si estuviera diseñado alrededor de contexto continuo?»
«¿Dónde deberían producirse realmente las decisiones?»
«¿Qué restricciones deberían aplicarse automáticamente?»

No son mejoras incrementales. Son preguntas estructurales.

Y apuntan hacia un tipo diferente de organización: una donde los procesos dejan de ser secuencias estáticas de acciones y pasan a ser sistemas dinámicos que mantienen estado, integran datos, operan bajo restricciones y se adaptan continuamente a partir de resultados. Exactamente las mismas características que definían los sistemas descritos en mi artículo anterior.

Las empresas que se muevan primero serán muy diferentes

Aquí es donde el cambio empieza a hacerse visible. Las empresas que logren rediseñar con éxito sus procesos alrededor de estos principios no serán simplemente más rápidas o más eficientes. Operarán de otra manera:

  • las decisiones ocurrirán más cerca de los datos
  • la coordinación requerirá menos traspasos
  • los bucles de retroalimentación se acortarán drásticamente
  • la ejecución se volverá más continua
  • los roles evolucionarán alrededor de sistemas, no de tareas

El Work Trend Index de Microsoft ya apunta hacia esta transición, describiendo organizaciones que evolucionan hacia estructuras más dinámicas y orientadas a resultados, donde humanos e inteligencia artificial colaboran alrededor de objetivos y no de funciones.

Desde fuera, estas empresas quizá no parezcan muy distintas al principio. Pero internamente, su lógica operativa habrá cambiado. Y ese cambio se acumula.

Esto no es opcional

Es tentador pensar en todo esto como una oportunidad. Y lo es. Pero también es otra cosa: una restricción.

Porque una vez que algunas empresas empiecen a operar así, las demás ya no competirán contra mejores herramientas. Competirán contra un tipo distinto de sistema.

Un sistema que:

  • aprende más rápido
  • se adapta continuamente
  • coordina con mayor eficiencia
  • ejecuta con menos retrasos

Eso no es algo que puedas igualar añadiendo otro copilot o desplegando otro modelo. Requiere rediseño.

La próxima fase de la inteligencia artificial empresarial será organizativa

Si la primera fase de la inteligencia artificial en la empresa fue la experimentación, y la segunda la toma de conciencia, la siguiente será la transformación.

No una transformación impulsada por modelos, sino por estructura. No estamos pasando de una «inteligencia artificial peor» a una «inteligencia artificial mejor». Estamos pasando de empresas construidas para humanos a empresas que deben operar con máquinas como parte de su lógica central.

Y eso exige algo que muchas organizaciones han evitado durante décadas: reconstruir la forma en que realmente trabajan.

La verdadera pregunta

Así que la pregunta ya no es «¿cómo usamos inteligencia artificial?» La pregunta es: «¿Estamos dispuestos a rediseñar nuestra empresa para que la inteligencia artificial pueda funcionar de verdad?»

Porque si la respuesta es no, el resultado ya está claro: la inteligencia artificial no fracasará. Pero tus procesos, sí.


(This article was previously published on Fast Company)

29 May 08:56

Un biciclista agrede a una conductora en plena calle después de golpear el retrovisor de su coche (Portugal).

by Fino
29 May 07:27

Marruecos se enfrenta a la pérdida de más de 40.000 puestos de trabajo tras la prohibición de las llamadas de telemarketing en Francia

by M.Dick_Tadura

Una ley aprobada en Francia prohíbe todas las llamadas de prospección sin el consentimiento explícito del cliente a partir del 11 de agosto. Esta medida pone en peligro a decenas de miles de empleados en los centros de llamadas marroquíes, que dependen en gran medida del mercado francés

etiquetas: marruecos, francia. telemarketing, trabajo, prohibición, siesta

» noticia original (www.lemonde.fr)

29 May 07:27

Investigación sobre Zapatero y su posible conexión con el Departamento de Seguridad Nacional de EEUU genera preocupación en Europa [ITA]

by Laro__

[L'Expresso-Italia] La investigación sobre expresidente español, Zapatero, presuntamente involucrando por Departamento de Seguridad Nacional de EEUU, ha generado inquietud en círculos políticos europeos. Se especula que el caso podría ser un mensaje a líderes europeos que han desafiado a EEUU o criticado a Israel. La posible implicación de las agencias estadounidenses en las investigaciones europeas plantea preocupaciones sobre la interferencia y la vulnerabilidad de líderes políticos europeos.

etiquetas: zapatero, europa, eeuu, manipulación, israel

» noticia original (www.lespresso.it)

29 May 07:26

Steve Bannon impulsa en Brasil una película para glorificar a Bolsonaro, pero el resultado ha sido justo lo contrario

by Yorga77

Steve Bannon, uno de los principales ideólogos del trumpismo, tenía un as bajo la manga para derrotar a Lula da Silva en las elecciones del próximo mes de octubre: una película al más puro estilo Hollywood sobre la biografía del presidente Jair Bolsonaro, preso por intento de golpe de Estado.

etiquetas: steve_bannon, impulsa, brasil, película, bolsonaro

» noticia original (www.eldiario.es)

29 May 07:26

La respuesta ciudadana aborta otra actuación de Desokupa, ahora en Irun

by vangraff

Miembros de DesokupaCyL han desplegado este jueves su parafernalia intimidatoria en Irun, ante una vivienda en la que afirmaban que no se paga el alquiler. Sin embargo, la presencia de varios jóvenes que les reprochaban su actitud ha bastado para que se marchen de vuelta a sus lugares de origen.

etiquetas: desokupa, desokupacyl, irun

» noticia original (www.naiz.eus)

29 May 07:25

Israel asegura que implementará el "plan de emigración" de Gaza

by Free_palestine

El ministro de Defensa israelí reafirmó este miércoles su intención de implementar el plan de desplazamiento de la población fuera de Gaza

etiquetas: limpieza étnica, crímenes de guerra, lesa humanidad, genocidio, neolengua

» noticia original (efe.com)

29 May 07:25

El que pueda dilapidar, que dilapide

by Oghaio

Tampoco es habitual ver entradas de la UCO así, a lo loco. Cuando van es por algo sólido, importante. Por ejemplo, a casa de Ayuso nunca fueron cuando lo de su padre, ni cuando lo de su hermano ni tampoco cuando lo de su novio. De hecho, ha pasado un año desde que a la UCO le fue encargado un informe sobre Alberto González Maserati y el informe no llega. No hay prisa y tampoco parece tenerla el juez que lleva ocho meses sin autorizar el acceso a las cuentas de la pareja de la presidenta madrileña. Cosas que pasan. O que no pasan. Depende.

etiquetas: dilapidar, dilapide, azanar, justicia, control

» noticia original (ctxt.es)

29 May 07:25

Explotó el megacohete New Glenn durante una prueba de fuego estático

by TooBased

Lo que debía ser un paso rutinario hacia la conquista del cosmos terminó en una bola de fuego en Florida, el New Glenn, el imponente mega-cohete desarrollado por la empresa de Jeff Bezos, Blue Origin, sufrió un catastrófico accidente durante una de sus pruebas de validación en Cabo Cañaveral. Este evento no solo representa una pérdida material masiva, sino que sacude los cimientos de un proyecto que lleva una década en preparación. El desastre ocurrió durante lo que en la industria se conoce como una “prueba de fuego estático”. Para entenderl

etiquetas: explotó, megacohete, new glenn, prueba, fuego estático

» noticia original (www.semana.com)

29 May 07:15

Los pensamientos oscuros más recurrentes

by Dalia Alonso

Hay una cosa que los pacientes tardan mucho en contar, y que casi siempre sale en la tercera o cuarta sesión, cuando ya han pillado confianza. Bajan la voz, miran al suelo, y te dicen alguna versión de esto: «A veces pienso cosas horribles. Cosas que no quiero pensar. Cosas que me asustan de mí mismo».

Y entonces lo cuentan.

Cuentan que a veces, al coger a su bebé en brazos, pasa por su cabeza la imagen de dejarlo caer por la ventana. Cuentan que, mientras conducen, les aparece la idea de girar bruscamente el volante contra el camión que viene de frente. Cuentan que, al coger un cuchillo para cortar el pan, se les viene la imagen de clavárselo a su pareja, a la que adoran. Cuentan que en el metro, cerca del borde del andén, sienten el impulso momentáneo de saltar o de empujar al que tienen delante. Cuentan que en misa les aparece la necesidad de gritar una blasfemia. Cuentan que mientras hacen el amor con su pareja, se cuela de repente la cara de su cuñado, o de una compañera de trabajo, o incluso de alguien con quien jamás se acostarían.

Y lo cuentan convencidos de que son malas personas. De que algo falla en ellos. De que, si los demás supieran lo que pasa por su cabeza, se alejarían con razón.

Lo primero que hay que dejar claro es que esto le pasa a casi todo el mundo. Los estudios sobre pensamientos intrusivos llevan décadas confirmándolo con muestras de población general, personas sin ningún diagnóstico: alrededor del 90% de los encuestados reconoce haber tenido pensamientos de este tipo en el último año. Agresivos, sexuales, blasfemos, absurdos, violentos. La diferencia entre quien desarrolla un problema y quien no lo desarrolla no está en tener el pensamiento. Está en lo que hace con él.

Alrededor del 90% de los encuestados reconoce haber tenido pensamientos de este tipo en el último año

Los pensamientos oscuros más frecuentes en consulta, por si alguien está leyendo esto con alivio creciente, son unos pocos y se repiten con sorprendente regularidad entre pacientes que no se conocen de nada.

El pensamiento de hacer daño a un bebé o a un niño pequeño es probablemente el que más culpa genera, y aparece con especial intensidad en madres recientes, cuyo cerebro está en un estado de hipervigilancia protectora que paradójicamente produce imágenes de la peor cosa que podría pasar.

El pensamiento de tirarse desde una altura, sin deseo real de morir, es tan común que los franceses le pusieron nombre hace dos siglos, «l’appel du vide», la llamada del vacío.

El pensamiento sexual inadecuado, con personas con las que nunca querríamos acostarnos (un familiar, un menor, alguien del mismo sexo si eres heterosexual o al revés), genera una vergüenza especialmente intensa porque la persona interpreta que, si lo ha pensado, algo querrá decir.

El pensamiento de gritar algo inapropiado en un sitio silencioso, como un funeral o una biblioteca. El pensamiento de perder el control al volante. El pensamiento de haber atropellado a alguien sin darte cuenta. El pensamiento de ser homosexual sin serlo, o de ser heterosexual sin serlo. El pensamiento de que tu pareja no te gusta en realidad. El pensamiento de haber hecho algo horrible y no recordarlo.

Todos estos pensamientos aparecen porque sí. No los invocas. No los decides. Te llegan como te llega el hambre o un bostezo, sin pedirte permiso.

La trampa empieza cuando interpretas el pensamiento como información sobre ti. Cuando te dices «si lo he pensado, por algo será». Ese es el primer paso equivocado, y el más importante, porque a partir de ahí todo lo que hagas va a empeorar el problema.

Si interpretas que el pensamiento significa algo sobre ti, harás dos cosas: intentarás quitártelo de la cabez  y empezarás a vigilarte para comprobar que no vuelve. Ambas cosas lo perpetúan.

Prueba esto ahora mismo, sin trampa. No pienses en un oso verde. Durante los próximos diez segundos, bajo ningún concepto, pienses en un oso verde.

Ya sabes qué ha pasado. El intento de bloquear un pensamiento lo amplifica, porque para comprobar que no estás pensándolo, tu cerebro tiene que volver a evocarlo. Con los pensamientos oscuros pasa exactamente lo mismo, pero cargado de miedo y de vergüenza, que son dos gasolinas que hacen arder cualquier idea.

El intento de bloquear un pensamiento lo amplifica

La segunda cosa que la gente hace, y que también empeora las cosas, es evitar. Dejas de coger al bebé en brazos. Dejas de conducir por la autopista. Dejas de entrar en la cocina cuando tu pareja está de espaldas. Dejas de ir al metro. Y cada evitación confirma al cerebro que ahí había un peligro real, con lo cual la próxima vez la alarma sube de volumen.

¿Qué funciona entonces? Básicamente tres cosas, y ninguna es mágica.

La primera, entender qué es un pensamiento. Un pensamiento no es un acto, no es una intención y no es un deseo. Es un evento eléctrico en tu cabeza, uno de los sesenta mil que vas a tener hoy. Lo que te define no es lo que aparece, sino lo que haces con lo que aparece.

La segunda, dejar de luchar. Cuando aparezca la imagen de tirar al bebé por la ventana, en lugar de apartarla con todas tus fuerzas, obsérvala pasar. Puedes decirle hola, ya estás aquí otra vez, y seguir haciendo lo que estabas haciendo. Al principio esto parece imposible, porque llevas años entrenando lo contrario. Pero con práctica, el pensamiento pierde intensidad, no porque desaparezca, sino porque deja de engancharse contigo.

La tercera, dejar de evitar. Volver a coger al bebé. Volver a conducir. Volver a entrar a la cocina. El miedo solo se apaga cuando compruebas, con el cuerpo y no con la cabeza, que el pensamiento no produce la catástrofe.

Si te pasa esto, no eres raro. Eres exactamente igual que la mayoría de la gente que camina por la calle. La única diferencia es que tú lo estás mirando de frente.

La entrada Los pensamientos oscuros más recurrentes se publicó primero en Ethic.

29 May 07:13

No pasa de moda.

by Fino

No pasa de moda.

Ver post completo: No pasa de moda.

29 May 07:13

Inés Arrimadas hizo las preguntas correctas hace 5 años.

by Fino
29 May 06:56

Roberto Leal: "Puedo asegurar que Pasapalabra va a continuar de la forma que sea, con El Rosco o sin El Rosco, y yo voy a seguir presentándolo"

by Iñako Díaz-Guerra
En plena guerra por el momento estrella de la tele, debuta como novelista con un thriller muy alejado de su imagen de yerno ideal: "Reivindico mis dobleces" Leer
29 May 06:53

Italia: una red de colectivos facilita el acceso al aborto que dificulta el Gobierno de Meloni

by Marta Facchini
En Palermo, un grupo de activistas ofrece un servicio gratuito de apoyo a la salud sexual y reproductiva. Organizaciones feministas y transfeministas han ideado formas de cuidado colectivo ante los obstáculos para acceder al aborto.

Temas principal: Italia

Leer artículo completo
29 May 06:52

Cuéntame… lo de Hacienda, Ana Duato

by Luis Fernando Quintero
Lo de Ana Duato es un drama. Y lo de Hacienda roza lo criminal.
29 May 06:50

10+ DevOps & SRE resources everyone should check out in the AI age — 2026

by Ammett W
This is an updated forward looking post. My original post can still be found here but this one focuses on current resources factoring AI which is everywhere.

This post is about some super resources that I think are interesting around the topics of Site Reliability Engineering and DevOps. Now let’s get into the content.

# 1. Core SRE & DevOps Foundations

Understanding the baseline systems architecture and culture is vital.

https://medium.com/media/77f11087991ea44b8d9597323559ab6c/href

# 2The “SRE books”

There are 3 very detailed books, you can read them free online here https://sre.google/books/

sre books

# 3— Operations in the AI Era & LLM Observability

Operating production software now means managing non-deterministic AI workloads. These resources guide you through debugging, monitoring, and capturing business value in modern software engineering.

# 4—DORA (DevOps Research & Assessment)

DORA research has been at it a while and also tracks exactly how technical changes — including generative AI — impact organizational velocity and stability.

# 5 — Continuous Learning & Hands-On Practices

# 6 — Platform Engineering — Check out these blogs

If you want to ask a question, find out more or share a thought? Please connect with me on LinkedIn and send me a message.

I’ll be in touch


10+ DevOps & SRE resources everyone should check out in the AI age — 2026 was originally published in Google Cloud - Community on Medium, where people are continuing the conversation by highlighting and responding to this story.

29 May 06:39

Humor 29/5/26

by Sofi Siete
29 May 06:28

La responsabilidad de Alemania

by rafaelpoch
El economista estadounidense Jeffrey Sachs insta, en una carta abierta dirigida al canciller alemán, Friedrich Merz, a entablar conversaciones inmediatas con el presidente ruso Vladimir Putin sobre la paz en EuropaAutor: Jeffrey D. Sachs Canciller Merz, Cuando le escribí una carta abierta hace medio año, insté a Alemania a apostar por la diplomacia con Rusia … Continuar leyendo "La responsabilidad de Alemania"
29 May 06:21

El Gobierno cancela más de 1,1 millones de antecedentes penales en 5 años mediante sistemas automatizados y robotizados

by Fino

El Gobierno cancela más de 1,1 millones de antecedentes penales en 5 años mediante sistemas automatizados y robotizados

El Gobierno ha cancelado 1.130.335 antecedentes penales en apenas cinco años mediante sistemas automatizados y robotizados del Ministerio de Justicia mientras vinculaba públicamente esos borrados con la obtención de la nacionalidad española y los permisos de residencia.

El salto exponencial coincide con la aceleración masiva de nacionalidades por residencia impulsada por Félix Bolaños: más de 780.000 propuestas de nacionalidad entre agosto de 2022 y enero de 2025 con la utilización de cinco sistemas de robotización e inteligencia artificial administrativa. @eldebate

El Gobierno cancela más de 1,1 millones de antecedentes penales en 5 años mediante sistemas automatizados y robotizados

Extra: Marlaska acusa al PP de usar a la Policía y a la Guardia Civil contra el PSOE. «Saben demasiado y me preocupa»

 

Ver post completo: El Gobierno cancela más de 1,1 millones de antecedentes penales en 5 años mediante sistemas automatizados y robotizados

29 May 06:19

Why and how to migrate to a Transit Gateway-attached AWS Network Firewall

by Frank Phillis

AWS Network Firewall now supports native attachment to AWS Transit Gateway. Customers commonly use Transit Gateway to route traffic from Amazon Virtual Private Cloud (Amazon VPC) networks to a centralized inspection VPC (a VPC dedicated to hosting firewall endpoints for traffic inspection) where their network firewall endpoints are deployed. This centralized deployment model reduces the need to have Network Firewall endpoints in each VPC, optimizing costs and providing a centralized point of network security control.

Customers deploying Network Firewall in a centralized deployment model using Transit Gateway have traditionally set up a dedicated inspection VPC with firewall subnets and managed the associated routing to direct traffic through the firewall. With native attachment, Network Firewall attaches directly to Transit Gateway, eliminating the need for the inspection VPC and enabling capabilities such as flexible cost allocation through Transit Gateway metering policies.

In this post, we explain what a Transit Gateway-attached network firewall is, the technical capabilities it unlocks, reasons to migrate to it, and how to perform the migration. For detailed step-by-step guidance on how to perform the migration using Terraform, AWS CloudFormation, or manually in the AWS Management Console, see the accompanying migration guide repository.

What is a Transit Gateway-attached network firewall?

A Transit Gateway-attached network firewall simplifies your network architecture by eliminating the need for a dedicated inspection VPC. Instead of creating an inspection VPC with firewall subnets and configuring the associated routing, you create your network firewall and specify which Transit Gateway instance you want to attach it to. AWS deploys the firewall endpoints into an AWS-managed VPC on your behalf. You don’t own or manage that VPC. From your perspective, the firewall appears as a Transit Gateway network function attachment that you route traffic to, similar to other Transit Gateway attachments.

Why migrate to a Transit Gateway-attached network firewall?

You might want to migrate to a Transit Gateway-attached network firewall for the following reasons:

  • Access to flexible cost allocation: With native attachment, you can use Transit Gateway metering policies to charge back account owners for traffic they send through the centralized firewall. Flexible cost allocation for Network Firewall traffic over a Transit Gateway is only available with a Transit Gateway-attached firewall. Without native attachment, you can only allocate Transit Gateway data processing charges, not the Network Firewall charges.
  • Reduced architectural complexity: You can eliminate the inspection VPC, leaving one less VPC to manage along with its associated routing tables and subnets.

Preparing for the change

Before migrating to a Transit Gateway-attached network firewall, gather the following information and keep these key considerations in mind.

Prerequisites

When you create your new Transit Gateway-attached network firewall, you will need:

  • Transit Gateway ID: The ID of the Transit Gateway instance you will attach your network firewall to.
  • Logging configuration: Create a new logging configuration (such as new Amazon CloudWatch log groups) for the new firewall. During migration, you will be running both firewalls simultaneously. Keeping the logs separate simplifies monitoring and troubleshooting each firewall during the migration period. After migration is complete, you can point the new firewall to your existing logging destinations.
  • Firewall policy: Create a new firewall policy for the new firewall rather than reusing your existing one. During the migration period, a separate policy lets you make changes to the new firewall’s policy without affecting the existing firewall while both are running simultaneously. After migration is complete, you can attach your existing production policy to the new firewall.

Key considerations

There are some important considerations to address while planning for this change.

  • Transit Gateway encryption: Check if you’re using Transit Gateway encryption support. If encryption is enabled and required for your security posture, native attachment to Network Firewall doesn’t currently support this capability. You will need to continue using your current firewall configuration.
  • NAT gateway Elastic IPs: If you need to maintain the same public IPs (for example, for partner allowlisting), plan for this during migration. For more information, see the Preserving your NAT gateway Elastic IPs during migration section later in this post.
  • Maintenance window: Plan to perform this migration during a dedicated maintenance window. Brief network outages will occur during parts of the process, such as when swapping Transit Gateway route table associations and replacing NAT gateways.

Performing the migration

Leave your existing Network Firewall setup unchanged while setting up the new Transit Gateway-attached firewall. With this approach, you can minimize potential downtime and test the new configuration before migrating production traffic.

The migration process varies depending on your current architecture. The following sections walk through the two most common centralized Network Firewall architectures and the high-level migration process for each. For detailed step-by-step guidance on how to perform the migration using Terraform, CloudFormation, or manually in the console, see the migration guide repository.

Architecture 1: Dedicated inspection VPC with separate egress VPC

In this architecture, shown in the following diagram, you have a dedicated inspection VPC with your network firewall endpoints, and a separate dedicated egress VPC with your NAT gateways.

Figure 1: Centralized egress traffic inspection with Network Firewall and Transit Gateway, with inspection and egress separated into two VPCs.

Figure 1: Centralized egress traffic inspection with Network Firewall and Transit Gateway, with inspection and egress separated into two VPCs.

The high-level migration process for this architecture is:

  1. Deploy a new egress VPC with a temporary NAT gateway. Creating a new VPC lets you leave the existing deployment unchanged while working on the migration.
  2. Create your new network firewall with native attachment to your Transit Gateway.
  3. Configure three new Transit Gateway route tables to define the traffic path through the new firewall: an inspection route table (associated with the new firewall), an egress route table (associated with the new egress VPC), and a temporary migrated spoke route table (for testing individual spoke VPCs on the new path).
  4. Test the new firewall by moving a single spoke VPC to the new path. Verify connectivity and confirm the firewall is inspecting traffic by checking the alert logs for layer 7 (application layer) details. Layer 7 information in the alert logs indicates the firewall is seeing both directions of the traffic flow. If asymmetric routing were occurring, the firewall would only see one direction and would not be able to perform application-layer inspection, so the presence of layer 7 details confirms traffic is flowing symmetrically through the new firewall.
  5. Migrate the remaining spoke VPCs. You can migrate VPCs incrementally, or when you’re confident in the new firewall deployment, update the default route in your existing spoke route table to point to the new Network Firewall network function attachment, which moves all remaining spokes that share that route table at once.
  6. Optionally, preserve your original NAT gateway Elastic IPs by re-routing traffic back to your existing egress VPC (see Preserving your NAT gateway Elastic IPs during migration).
  7. Decommission old resources after you’ve verified that traffic is flowing correctly. Which VPCs you remove depends on whether you preserved your original EIPs (see Preserving your NAT gateway Elastic IPs during migration).
Figure 2: Post-migration architecture for Architecture 1, with the inspection VPC eliminated and traffic flowing through the Transit Gateway-attached Network Firewall to a dedicated egress VPC.

Figure 2: Post-migration architecture for Architecture 1, with the inspection VPC eliminated and traffic flowing through the Transit Gateway-attached Network Firewall to a dedicated egress VPC.

For the complete walkthrough of how to perform this migration:

Architecture 2: Combined inspection and egress VPC

In this architecture, shown in the following diagram, you have a single VPC that contains both your network firewall endpoints and your NAT gateways.

Figure 3: Centralized egress traffic inspection with Network Firewall and Transit Gateway, with inspection and egress combined in one VPC.

Figure 3: Centralized egress traffic inspection with Network Firewall and Transit Gateway, with inspection and egress combined in one VPC.

The migration process for this architecture follows the same high-level steps as Architecture 1.

  1. Deploy a new dedicated egress VPC with a temporary NAT gateway. Creating a new VPC lets you leave the existing deployment unchanged while working on the migration.
  2. Create your new network firewall with native attachment to your Transit Gateway.
  3. Configure three new Transit Gateway route tables to define the traffic path through the new firewall: an inspection route table, an egress route table, and a temporary migrated spoke route table.
  4. Test the new firewall by moving a single spoke VPC to the new path. Verify connectivity and confirm the firewall is inspecting traffic by checking the alert logs for layer 7 (application layer) details. Layer 7 information in the alert logs indicates the firewall is seeing both directions of the traffic flow. If asymmetric routing were occurring, the firewall would only see one direction and would not be able to perform application-layer inspection, so the presence of layer 7 details confirms traffic is flowing symmetrically through the new firewall.
  5. Migrate the remaining spoke VPCs. You can migrate VPCs incrementally, or once you are confident in the new firewall deployment, update the default route in your existing spoke route table to point to the new Network Firewall network function attachment, which moves all remaining spokes that share that route table at once.
  6. Optionally, preserve your original NAT gateway Elastic IPs by transferring them to the new egress VPC.
  7. Decommission the old combined VPC after you’ve verified that traffic is flowing correctly.
Figure 4: Post-migration architecture for Architecture 2, with the combined VPC eliminated and traffic flowing through the Transit Gateway-attached Network Firewall to a dedicated egress VPC.

Figure 4: Post-migration architecture for Architecture 2, with the combined VPC eliminated and traffic flowing through the Transit Gateway-attached Network Firewall to a dedicated egress VPC.

For the complete walkthrough of how to perform this migration, see:

Differences between the two migrations

Both architectures deploy the same new resources and use the same phased cutover approach. The differences are in the starting Transit Gateway routing structure (Architecture 1 has three route tables across two VPCs, Architecture 2 has two route tables in one VPC) and what you clean up at the end (two old VPCs instead of one). Both architectures converge to the same end state. For a detailed comparison, see the migration guide repository.

Minimizing downtime and testing your migration

Regardless of which architecture you’re migrating from, follow these best practices to minimize risk.

The migration guide repository includes starting architecture CloudFormation and Terraform templates for both architectures, so you can deploy the exact starting environment in a development or test account and run through the entire migration process before touching production.

Test before you migrate. Create your new Transit Gateway-attached firewall in parallel with your existing setup. Use a test VPC to validate the new configuration. Verify that logging is working correctly and that the firewall alert logs show layer 7 traffic details, which confirms there is no asymmetric routing. Test both allowed and blocked traffic scenarios before migrating production traffic.

Migrate in phases. Start with a single, non-critical workload VPC. Update only that VPC’s routes to use the new firewall attachment. Monitor and verify application behavior and performance with the application owner before proceeding. When planning your migration order, migrate spoke VPCs that have east-west traffic between each other at the same time. During the phased migration, spokes on different firewall paths will have their east-west traffic traverse two stateful firewalls. Because each stateful firewall independently tracks connection state, traffic that enters through one firewall and returns through another appears as untracked, causing the firewalls to drop or incorrectly handle the return traffic. When you’re confident in the new firewall deployment, you can update the default route in your existing spoke route table to point to the new firewall, which moves all remaining spokes that share that route table at once. Keep your old firewall configuration active until all traffic is migrated.

Prepare a rollback plan. Document your current route table configurations before making changes. Keep your existing firewall and inspection VPC active during migration. If issues arise, revert the route table changes to restore the previous configuration. Decommission old resources after you’ve verified applications are operating as expected.

Preserving your NAT gateway Elastic IPs during migration

An important consideration during migration is maintaining your existing NAT gateway Elastic IP addresses. Many organizations have these IPs allowlisted with external partners, third-party services, or in firewall rules. Changing these IPs would require coordination with multiple stakeholders and could disrupt business operations.

During migration, you need both your old and new deployments to operate simultaneously, so you can validate the new setup without impacting production traffic. This means creating temporary NAT gateways with temporary Elastic IPs in the new egress VPC.

After you’ve confirmed the new firewall deployment is stable and production traffic has been successfully migrated, you can restore your original Elastic IPs. The process differs depending on your architecture:

  • For Architecture 1 (separate inspection and egress VPCs), your existing egress VPC and its NAT gateways are independent of the inspection VPC being decommissioned. You can keep them by re-associating the existing egress VPC’s Transit Gateway attachment with the new egress route table and updating the inspection route table to route traffic there instead of the temporary egress VPC. This is a Transit Gateway routing change that takes seconds, doesn’t require deleting or creating any NAT gateways, and doesn’t increase in complexity with the number of Availability Zones. After the re-association, you delete the temporary egress VPC.
  • For Architecture 2 (combined inspection and egress VPC), the old VPC contains both the firewall endpoints and the NAT gateways. The simplest path is to decommission it and move the Elastic IPs to the new egress VPC. To do this, you delete the old NAT gateways to free the Elastic IPs, then create new NAT gateways in the new egress VPC with the original Elastic IPs. This requires a brief maintenance window while the new NAT gateways provision and must be repeated for each Availability Zone.

For the detailed step-by-step procedure, see the EIP preservation steps in the migration guide repository.

Conclusion

In this post, we explained what a Transit Gateway-attached network firewall is and how it differs from the traditional inspection VPC model, the reasons to migrate including reduced architectural complexity and flexible cost allocation, what to prepare before starting, and the high-level migration process for the two most common centralized inspection architectures. We also covered best practices for minimizing downtime, handling east-west traffic between spokes during phased migration, and preserving your existing NAT gateway Elastic IPs.

With a Transit Gateway-attached network firewall, AWS manages the firewall endpoints and the underlying VPC on your behalf, eliminating the inspection VPC from your architecture and enabling flexible cost allocation through Transit Gateway metering policies. The phased migration approach covered in this post lets you run both firewalls in parallel, validate the new path with a single spoke VPC, and cut over the rest of your traffic when you are ready.

For detailed step-by-step guidance using Terraform, CloudFormation, or the AWS Management Console for both architectures covered in this post, see the migration guide repository. The repository includes starting architecture templates so you can practice the full migration end-to-end in a test account before migrating your production environment.

If you have feedback about this post, submit comments in the Comments section below.


Frank Phillis

Frank Phillis

Frank is a Senior Solutions Architect (Security) at AWS. He enables customers to get their security architecture right. Frank specializes in cryptography, identity, and incident response. He’s the creator of the popular AWS Incident Response playbooks and regularly speaks at security events. When not thinking about tech, Frank can be found with his family, riding bikes, or making music.

Lawton Pittenger

Lawton Pittenger

Lawton is a Worldwide Security Specialist Solutions Architect at AWS, based in New York City. He specializes in helping customers design and implement effective network security controls. At AWS, he works with customers at scale and collaborates closely with service teams to drive continuous improvement in security services based on customer needs and feedback. Outside of work, his interests include skateboarding, snowboarding, and spending time in nature.

29 May 06:19

How to Build a Hybrid Cloud Platform with Google Cloud Services and On-Premise Kubernetes Infrastructure

by Shubham Katara

In this article, you'll learn how to design and build a secure, scalable hybrid cloud platform that connects your on‑premises Kubernetes infrastructure to Google Cloud Platform. This allows on‑prem apps can consume cloud services (notably GPUs) without brittle long‑lived keys, manual credential management, or risky network patterns.

Who this is for:

  • Platform engineers, SREs, and security-focused cloud architects who operate mixed on‑prem and cloud Kubernetes estates.

  • Teams that need scalable, auditable access from on‑prem workloads to GCP resources (especially GPU instances) while minimizing operational overhead and blast radius.

What you’ll get from this guide:

  • The motivation and economics behind a hybrid approach (why GPUs often push workloads to the cloud).

  • Common pitfalls with service account keys and how “accidental air gaps” occur in real environments.

  • A practical, end‑to‑end pattern that uses Workload Identity Federation to give on‑prem pods short‑lived, auditable access to GCP without embedding keys.

What’s included:

  • Conceptual explanations, security tradeoffs, and operational best practices.

  • Concrete examples and Kubernetes/Terraform artifacts (linked in the GitHub repo at the end of this article) so you can reproduce the setup in your environment.

Read on for the theory, then follow the hands‑on sections to provision GCP resources, configure federation, enforce policies with CEL and Kyverno, and validate secure, scalable GPU access from your on‑prem Kubernetes clusters.

Note: Kubernetes and Terraform artifacts are linked in the GitHub repo at the end of this article.

Table of Contents

Prerequisites

Before following along, you'll need:

  • A Kubernetes cluster that is not GKE (on-premises, bare-metal, or a virtual cluster)

  • A Google Cloud project with the following APIs enabled: IAM, Security Token Service (STS), and Workload Identity

  • Terraform installed and configured

  • Kyverno installed in your cluster

  • Python 3 with google-cloud-secret-manager and google-cloud-aiplatform libraries (for the verification steps. Code available in the github repository.)

  • kubectl access to your cluster

Why Hybrid Cloud Matters

If everything goes right, a hybrid cloud platform lets your on-premises and cloud workloads talk to each other as if they were part of the same network.

There are many practical reasons to run a hybrid cloud setup:

  • Offloading analytics to BigQuery: You keep your analytics apps on-prem for data sovereignty, but pipe large datasets into BigQuery for world-class processing power — without buying extra servers.

  • Creating a unified network with Cloud Interconnect: Using Cloud Interconnect or Cloud VPN, your on-premises datacenter becomes an extension of the Google Cloud Platform (GCP) Virtual Private Cloud (VPC). Your on-prem invoice apps can talk to cloud-based user services with low latency and no public internet exposure.

  • Cost-effective scalability via Cloud Storage: You can use cloud storage as a backend for local apps, storing logs, backups, and historical data while paying only for what you use.

  • Event-driven syncing with Pub/Sub: When something happens on-prem, a message through Cloud Pub/Sub lets cloud services react instantly — no manual polling required.

The Economics of Hybrid: GPUs Changed Everything

Before diving into the technical problem, it's worth understanding why hybrid clouds matter more than ever.

Your organization, like most enterprises, has made significant investments in on-premises datacenters. Servers are bought. Racks are filled. Network infrastructure is paid for. The marginal cost of running one more workload is essentially zero.

Then came the AI wave.

Suddenly every team needs Graphics Processing Units (GPUs). Not one or two — dozens of A100s for training, fleets of inference endpoints, vector databases that need to sit close to the models. GPUs are scarce. Lead times for on-prem GPU hardware stretch into months. Cloud providers have them available in minutes.

The architecture that actually makes economic sense looks like this:

  • The on-prem datacenter handles the bulk of compute — web servers, business logic, databases, batch processing. This is commodity compute you've already paid for.

  • The cloud handles what's scarce — GPU-accelerated inference, model training, AI/ML endpoints. You pay per request, scale on demand, and don't wait six months for hardware.

The cloud isn't a full migration destination — it's an extension for capabilities you can't easily build on-prem.

But those on-prem workloads need to authenticate to cloud services. Every API call from the datacenter to a Vertex AI endpoint, every request to a GPU-powered inference service, every write to Cloud Storage for model artifacts — all of it needs credentials. That's the problem this article solves.

Why Service Account Keys Fail at Scale

Here's a scenario that plays out in thousands of enterprises daily.

A development team needs their on-prem application to write to Google Cloud Storage. The "obvious" solution? Generate a GCP service account key, base64 encode it, store it in a Kubernetes Secret, and mount it in the pod:

apiVersion: v1
kind: Secret
metadata:
  name: gcp-credentials
type: Opaque
data:
  key.json: eyJ0eXBlIjoic2VydmljZV9hY2NvdW50IiwicHJvamVjdF9pZCI6…

This works. It also introduces serious problems:

  • Never expires. That key is valid until someone remembers to rotate it (they won't) or it gets compromised (it will).

  • Can be exfiltrated trivially. Anyone with read access to that namespace can run kubectl get secret -o yaml and walk away with permanent GCP access.

  • Has no audit trail for the actual workload. GCP sees "service-account-xyz accessed this bucket" — not "pod frontend-abc-123 in namespace production."

  • Scales terribly. 50 teams × 3 environments × 4 GCP projects = 600 keys to track, rotate, and hope haven't been committed to git.

Security teams know this. That's why many organizations have done the only sensible thing: they have disabled service account key generation entirely.

How the Accidental Air Gap Happens

When you disable key generation, you haven't solved the hybrid cloud platform problem — you've just made it someone else's problem. That someone is usually a platform team staring at a Jira ticket that says "cannot access GCP from on-prem, P1, blocking release."

The result? Your "hybrid cloud platform" isn't hybrid at all. It's two disconnected systems.

Teams resort to building intermediary services, API gateways that proxy requests, or finding creative ways to get keys anyway. None of this is a platform. It's duct tape.

How Workload Identity Federation Bridges the Gap

Every Kubernetes cluster already issues cryptographically signed identity tokens to every pod. And Google Cloud has a service specifically designed to trust those tokens.

This is Workload Identity Federation — and combined with OpenID Connect (OIDC), it's the missing piece that makes hybrid platforms actually work.

The service is quite well named because of the word Federation. it means GCP doesn't store your identity — it agrees to trust identities issued by another system, as long as they can be cryptographically verified. This all works with a very well orchestrated set of steps in the following order:

  1. Pod presents its Kubernetes-issued JWT to GCP's STS endpoint.

  2. STS verifies the signature against your cluster's public JWKS.

  3. STS checks the JWT's claims against the Workload Identity Pool's rules (audience, issuer, CEL conditions).

  4. STS returns a short-lived Google access token (typically 1 hour) that the pod uses for API calls.

It is also worth mentioning that Workload Identity Federation is not Kubernetes specific. It works with AWS IAM, Azure AD, GitHub Actions OIDC, and any OIDC-compliant identity provider.

How Kubernetes Identity Works

Every pod with a ServiceAccount gets a JSON Web Token (JWT) automatically mounted at /run/secrets/kubernetes.io/serviceaccount/token. This isn't just an opaque blob — it's a signed assertion of identity:

{
  "iss": "https://kubernetes.default.svc.cluster.local",
  "sub": "system:serviceaccount:production:backend-api",
  "aud": ["https://iam.googleapis.com/..."],
  "kubernetes.io": {
    "namespace": "production",
    "serviceaccount": {
      "name": "backend-api"
    }
  },
  "exp": 1735689600
}

In a JWT, claims are just the key-value pairs inside the token's payload — each one is a claim the issuer is making about the subject. Think of them as facts the token is asserting, signed cryptographically so the verifier can trust them.

The critical insight: this token is created by a set of JSON Web Key Set (JWKS) and is verifiable by anyone who has your cluster's public keys, exposed via the JSON Web Key Set (JWKS) endpoint:

kubectl get --raw /openid/v1/jwks

Google Cloud's Security Token Service (STS) can validate these tokens. No keys are exchanged. No secrets are stored. Just cryptographic proof of identity.

How to Prepare Google Cloud Platform resources

The Workload Identity Pool is a trust boundary — a declaration that says "I accept identities from external sources." The OIDC Provider configures how to validate those identities.

resource "google_iam_workload_identity_pool" "pool" {
  workload_identity_pool_id = "hybrid-platform-pool"
  project                   = "my-project"
}

resource "google_iam_workload_identity_pool_provider" "k8s_provider" {
  project                            = "my-project"
  workload_identity_pool_id          = google_iam_workload_identity_pool.pool.workload_identity_pool_id
  workload_identity_pool_provider_id = "on-prem-cluster"

  attribute_mapping = {
    "google.subject"      = "assertion.sub"
    "attribute.namespace" = "assertion['kubernetes.io']['namespace']"
  }

  attribute_condition = "attribute.namespace in [\"production\", \"staging\"]"

  oidc {
    issuer_uri = "https://kubernetes.default.svc.cluster.local"
    jwks_json  = file("jwks.json")  # Your cluster's public keys
  }
}

Two things to note here:

  1. attribute_mapping extracts claims from the Kubernetes JWT and makes them available as GCP attributes. By using `assertion['kubernetes.io']['namespace']`, the namespace is pulled out so you can use it for access control.

  2. attribute_condition is where security policy lives. More on this in the next section.

How to Use CEL for Fine-Grained Access Control

The attribute_condition field uses Common Expression Language (CEL). This single line of policy can replace dozens of Identity and Access Management (IAM) bindings:

attribute.namespace in ["production", "staging"]

With this condition, a pod in the kube-system namespace cannot authenticate to GCP at all — the token exchange is rejected before IAM is even consulted.

You can get more sophisticated:

// Only production namespace, and only specific service accounts
attribute.namespace == "production" &&
  attribute.service_account in ["payment-processor", "order-service"]

// Allow staging, but only during business hours
attribute.namespace == "staging" &&
  request.time.getHours("America/New_York") >= 9 &&
  request.time.getHours("America/New_York") < 17

This is defense in depth. Even if someone creates a rogue ServiceAccount or has kubectl access, they cannot authenticate to GCP unless the CEL condition passes. The security boundary is enforced by Google's infrastructure, not by hoping developers follow policy.

How to Inject Credentials Automatically with Kyverno

Having a working identity federation is only half the battle. Your customers and developers shouldn't need to understand OIDC, STS, or credential configuration files. They should deploy their app and have it work.

Before we get to the automation, it's worth pausing on what a credential configuration file actually is — because the name is a little misleading.

A credential configuration file (sometimes called an "external account config" or "ADC config") is a small JSON document that tells Google's client libraries how to obtain a credential at runtime. It is not itself a credential. You'll see the actual file later in this article — it contains no secrets. Just metadata: the Workload Identity Pool audience, the STS token-exchange endpoint, the source token type, and the path on the pod's filesystem where the real (short-lived) Kubernetes ServiceAccount token lives.

Compare that to a traditional service account key:

Service Account Key (key.json) Credential Config (credential-configuration.json)
What's inside the file An RSA private key that is the credential Instructions for exchanging an external token
Lifetime of the secret material Forever, until manually rotated Source token rotates automatically (~1h TTL)
If the file leaks Long-lived access to a GCP service account Useless on its own — points to a token only the pod can read
Identity model Impersonates a GCP service account directly Federates an external identity into GCP via STS
Who handles rotation A human (or no one) The Kubernetes API server, transparently

Both files end up referenced by GOOGLE_APPLICATION_CREDENTIALS and look interchangeable from the application's point of view — but only one of them is dangerous to lose. The credential config file is safe to ship in a ConfigMap precisely because there's nothing to steal.

Having this file in the ConfigMap is half the solution. It actually needs to end up in the workload pods that need access to GCP services. This is where Kyverno comes in. A single ClusterPolicy automatically injects everything a pod needs:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: workload-identity-federation
spec:
  rules:
    - name: inject-gcp-credentials
      match:
        any:
          - resources:
              kinds:
                - Deployment
              selector:
                matchLabels:
                  workload-identity-federation: "enabled"
      mutate:
        patchStrategicMerge:
          spec:
            template:
              spec:
                volumes:
                  - name: workload-identity-credential-configuration
                    configMap:
                      name: workload-identity-federation-config
                containers:
                  - (name): "*"
                    volumeMounts:
                      - name: workload-identity-credential-configuration
                        mountPath: /etc/workload-identity
                        readOnly: true
                    env:
                      - name: GOOGLE_APPLICATION_CREDENTIALS
                        value: "/etc/workload-identity/credential-configuration.json"

The above cluster policy does three things:

  1. Mounts the configmap inside the containers in the deployment at /etc/workload-identity.

  2. Injects an environment variable called GOOGLE_APPLICATION_CREDENTIALS that points to the absolute path of the credential config file.

From a developer's perspective, this is their entire integration:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    workload-identity-federation: "enabled" # That's it.
spec:
  # ... normal deployment spec

The credential configuration file (created by Terraform as a ConfigMap) tells Google's client libraries how to exchange tokens:

{
  "type": "external_account",
  "audience": "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID",
  "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
  "token_url": "https://sts.googleapis.com/v1/token",
  "credential_source": {
    "file": "/run/secrets/kubernetes.io/serviceaccount/token"
  }
}

This JSON file is a credential configuration for Google's Workload Identity Federation. It instructs Google Cloud client libraries to obtain cloud access tokens by exchanging a Kubernetes ServiceAccount token (located at /run/secrets/kubernetes.io/serviceaccount/token) for a Google Cloud access token, using an external identity provider configured via a Workload Identity Pool. This allows workloads running outside of GCP, such as on-premises Kubernetes clusters, to authenticate to Google Cloud services without needing to manage long-lived service account keys.

Every Google Cloud SDK and client library understands this format. Python, Go, Java, and Node.js all just work.

How to Grant IAM Permissions to Federated Identities

The service account token that has been trusted by the STS service, also known as a federated identity, need permissions to access resources. You bind IAM roles to the identity pool attributes:

resource "google_project_iam_member" "secret_access" {
  for_each = toset(["production", "staging"])
  project  = "my-project"
  role     = "roles/secretmanager.secretAccessor"
  member   = "principalSet://iam.googleapis.com/projects/\({PROJECT_NUMBER}/locations/global/workloadIdentityPools/\){POOL_ID}/attribute.namespace/${each.value}"
}

This grants Secret Manager access to all pods authenticated from the production or staging namespaces. The principalSet syntax allows matching on attributes. You can also restrict to specific service accounts:

member = "principal://iam.googleapis.com/.../subject/system:serviceaccount:production:payment-processor"

How to Verify the Setup

You can verify the setup with a simple Python script that lists secrets from Secret Manager. This runs inside a pod on your on-premises cluster:

# list_secrets.py - running on-prem, accessing GCP Secret Manager
from google.cloud import secretmanager

def list_secrets(project_id: str):
    """
    List all secrets in a GCP project.

    No credentials are passed explicitly. The google-cloud-secret-manager
    library automatically:
    1. Reads GOOGLE_APPLICATION_CREDENTIALS env var (set by Kyverno)
    2. Loads the credential configuration JSON
    3. Reads the K8s ServiceAccount token from /run/secrets/...
    4. Exchanges it for a GCP access token via STS
    5. Uses that token to call the Secret Manager API
    """
    client = secretmanager.SecretManagerServiceClient()
    parent = f"projects/{project_id}"

    print(f"Secrets in {project_id}:")
    print("-" * 40)

    for secret in client.list_secrets(request={"parent": parent}):
        secret_name = secret.name.split("/")[-1]
        print(f"  - {secret_name}")

    print("-" * 40)
    print("Authentication: Workload Identity Federation")
    print("Credentials: None stored, token exchanged at runtime")

if __name__ == "__main__":
    list_secrets("my-project-id")

Run this inside your labeled pod:

$ kubectl exec -it my-app-xyz -- python list_secrets.py

Secrets in my-project-id:
----------------------------------------
  - database-password
  - api-key-stripe
  - oauth-client-secret
  - ml-model-api-key
----------------------------------------
Authentication: Workload Identity Federation
Credentials: None stored, token exchanged at runtime

No service account key. No secret mounted. Just a Kubernetes ServiceAccount token exchanged for GCP credentials at runtime.

This same pattern works for any GCP service — Secret Manager, Cloud Storage, BigQuery, Pub/Sub, and Vertex AI.

How to Connect On-Prem Apps to Cloud GPUs

Consider a typical flow: an on-prem order processing service needs to call a Vertex AI endpoint for fraud detection. The model runs on GPUs in Google Cloud (you can spin up A100s in minutes, not months). The application logic stays on-prem (you've already paid for that compute).

With the IAM bindings in place, any pod in the allowed namespaces can call Vertex AI:

# fraud_detector.py - running on-prem, calling cloud GPUs
from google.cloud import aiplatform

def check_fraud(transaction: dict) -> float:
    """
    Call a Vertex AI endpoint for fraud detection.

    The model runs on A100 GPUs in Google Cloud.
    This code runs on-prem in the datacenter.

    Authentication is automatic:
    1. Kyverno injected GOOGLE_APPLICATION_CREDENTIALS
    2. The aiplatform SDK reads the credential config
    3. K8s SA token is exchanged for GCP token via STS
    4. Request is authenticated to Vertex AI
    """
    endpoint = aiplatform.Endpoint(
        endpoint_name="projects/my-project/locations/us-central1/endpoints/fraud-model"
    )
    prediction = endpoint.predict(instances=[transaction])
    return prediction.predictions[0]["fraud_score"]


def generate_embeddings(texts: list[str]) -> list[list[float]]:
    """
    Generate text embeddings using a cloud-hosted model.

    Embedding models are GPU-intensive. Running them on-prem
    would require dedicated hardware. In the cloud, you pay per request.
    """
    from vertexai.language_models import TextEmbeddingModel

    model = TextEmbeddingModel.from_pretrained("text-embedding-004")
    embeddings = model.get_embeddings(texts)
    return [e.values for e in embeddings]

The developer doesn't think about authentication at all. They add the label to their deployment, and their on-prem pod can call:

  • Vertex AI endpoints for ML inference on cloud GPUs

  • Cloud Storage for model artifacts and training data

  • BigQuery for feature stores and analytics

  • Pub/Sub for event streaming between environments

  • Secret Manager for API keys and configuration

This is the hybrid platform working as intended.

How to Scale GPU Access with CEL Conditions

CEL conditions become especially powerful when you want to restrict GPU access to specific namespaces. For example, to allow only ML-related namespaces to access Vertex AI:

attribute.namespace in ["ml-inference", "ml-training", "data-science"] &&
  attribute.service_account.startsWith("ml-")

You can also grant different access levels per namespace:

# ML inference namespace gets prediction access
resource "google_project_iam_member" "ml_inference" {
  project = "my-project"
  role    = "roles/aiplatform.user"
  member  = "principalSet://iam.googleapis.com/.../attribute.namespace/ml-inference"
}

# Data science namespace gets full Vertex AI access (for experimentation)
resource "google_project_iam_member" "data_science" {
  project = "my-project"
  role    = "roles/aiplatform.admin"
  member  = "principalSet://iam.googleapis.com/.../attribute.namespace/data-science"
}

The on-prem application teams don't need to know or care about GCP IAM. They deploy to the right namespace, add a label, and the platform handles the rest.

The Security Properties Compared

Here's a side-by-side comparison of the two authentication approaches:

Property Service Account Keys Workload Identity Federation
Credential lifetime Until manually rotated (often years) Short-lived (1 hour for GCP tokens)
Exfiltration risk High — static key can be copied anywhere Low — token expires quickly
Audit trail Service account name only Namespace + service account name
Key management overhead 600+ keys at scale Zero keys to manage
Security policy enforcement Manual / trust-based Enforced by GCP infrastructure via CEL
Developer experience Copy key, create secret, mount volume Add one label to the deployment

The short-lived nature of tokens deserves emphasis. Even in a worst-case scenario where a token is somehow exfiltrated, it expires. Kubernetes ServiceAccount tokens have a configurable lifetime, and the GCP access tokens issued by STS are valid for one hour. A service account key, by contrast, remains valid until someone explicitly rotates it — often years.

The Complete Infrastructure as Code Layout

The entire solution is codified in Terraform, managing both GCP and Kubernetes resources:

workload-identity-federation/
├── providers.tf      # Google + Kubernetes providers
├── locals.tf         # Configuration (namespaces, project ID, etc.)
├── gcp.tf            # Identity pool, provider, IAM bindings
└── kubernetes.tf     # ConfigMap with credential configuration

A single terraform apply:

  1. Creates the Workload Identity Pool in GCP

  2. Configures the OIDC provider with your cluster's JWKS

  3. Sets up IAM bindings for allowed namespaces

  4. Creates ConfigMaps in each namespace with the credential configuration

Combined with the Kyverno policy, you get a fully automated pipeline:

New namespace added to allowed list
        │
        ▼
Terraform creates ConfigMap in that namespace
        │
        ▼
Developer deploys with label
        │
        ▼
Kyverno injects credentials automatically
        │
        ▼
Pod authenticates to GCP via OIDC
        │
        ▼
Application accesses GCP services

No tickets. No key requests. No secrets to manage.

How to Run a Proof of Concept with vCluster

To validate this works outside GKE, you can set up a demonstration using vCluster — a virtual Kubernetes cluster that runs inside another Kubernetes cluster. This proves the solution works for any cluster. You can setup vCluster in Docker using vind

# vcluster.yaml
experimental:
  docker:
    nodes:
      - name: worker-1
      - name: worker-2
deploy:
  cni:
    flannel:
      enabled: true
controlPlane:
  distro:
    k8s:
      version: "v1.35.0"
[root@localhost #] vcluster create hybrid --driver docker -f vcluster.yaml
[root@localhost #] kubectl get nodes
hybrid-control-plane   Ready    control-plane   14d   v1.34.0   192.168.107.2   <none>        Debian GNU/Linux 12 (bookworm)   7.0.5-orbstack-00330-ge3df4e19b0a0-dirty   containerd://2.1.3
hybrid-worker          Ready    <none>          14d   v1.34.0   192.168.107.3   <none>        Debian GNU/Linux 12 (bookworm)   7.0.5-orbstack-00330-ge3df4e19b0a0-dirty   containerd://2.1.3
hybrid-worker2         Ready    <none>          14d   v1.34.0   192.168.107.4   <none>        Debian GNU/Linux 12 (bookworm)   7.0.5-orbstack-00330-ge3df4e19b0a0-dirty   containerd://2.1.3

Inside the vCluster, deploy a simple test deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gcp-test
  labels:
    workload-identity-federation: "enabled"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gcp-test
  template:
    metadata:
      labels:
        app: gcp-test
    spec:
      containers:
        - name: test
          image: google/cloud-sdk:slim
          command: ["sleep", "infinity"]

Exec into the pod and verify:

$ kubectl exec -it gcp-test-xxx -- bash

# Inside the pod:
\( gcloud auth login --cred-file=\)GOOGLE_APPLICATION_CREDENTIALS
Authenticated with external account credentials for: [principal://iam.googleapis.com/...]

$ gcloud secrets list --project=my-project
NAME                 CREATED
database-password    2024-01-15T10:30:00Z
api-key              2024-01-14T09:15:00Z

No keys. No secrets mounted. Just identity federation working as designed.

Common Issues and How to Solve Them

How to Handle JWKS Retrieval for Air-Gapped Clusters

If your cluster's OIDC discovery endpoint isn't publicly reachable (most on-prem clusters aren't), you need to manually export the JWKS and upload it to GCP:

kubectl get --raw /openid/v1/jwks > jwks.json

This file must be updated if the cluster's signing keys rotate. Set up a periodic job that checks for key changes and updates the Terraform configuration.

How to Fix Issuer URL Mismatches

The iss claim in the Kubernetes token must exactly match the issuer URL configured in the OIDC provider. For clusters using internal DNS:

issuer_uri = "https://kubernetes.default.svc.cluster.local"

This URL doesn't need to be reachable from GCP — the JWKS file provides the validation keys. But it must match what's in the token exactly.

How to Debug Token Exchange Failures

When authentication fails, the error messages can be cryptic. Common causes and fixes:

Error Likely Cause Fix
invalid_grant Issuer URL mismatch Check iss claim in JWT against configured issuer_uri
audience mismatch Wrong audience in credential config Regenerate the credential configuration JSON via Terraform
CEL condition failed Namespace not in allowed list Add namespace to attribute_condition and re-apply
JWKS validation failed Signing keys have rotated Re-export JWKS and update Terraform config

Conclusion

After implementing this setup, on-premises workloads authenticate to Google Cloud exactly like GKE workloads do — without a single long-lived credential. The security team is happy (no keys to audit), developers are happy (just add a label), and the platform team is happy (no more credential management tickets).

Here's what you accomplished in this tutorial:

  1. /Understood why service account keys fail at scale and the security risks they introduce

  2. Created a Workload Identity Pool and OIDC provider in GCP to trust your cluster's token issuer

  3. Used CEL conditions to enforce fine-grained, namespace-level access policies

  4. Automated credential injection into pods using a Kyverno ClusterPolicy

  5. Bound IAM roles to federated identity attributes — no long-lived keys anywhere

  6. Verified the setup by calling GCP APIs (Secret Manager, Vertex AI) from an on-prem pod

  7. Proved the solution works on any Kubernetes cluster using vCluster

The technologies used here aren't new. OIDC has been in Kubernetes since version 1.20. Workload Identity Federation has been in GCP for years. Kyverno and Terraform are mature tools. What this tutorial puts together is an end-to-end solution that developers can adopt with minimal effort.

If your organization has disabled service account keys (or should), this is the path forward. Your on-prem and cloud clusters can finally be what they were always meant to be: secure extensions of each other.

The complete implementation is available as a Terraform module with Kyverno policies: github.com/shkatara/hybrid-platform-gcp-workload-identity-federation

If this helps, you can follow me on https://www.linkedin.com/in/shubhamkatara/, https://www.youtube.com/@kubesimplify, https://www.linkedin.com/company/kubesimplify/ and

28 May 21:49

jello y su ADV

Hoy, me he dado cuenta de que, si fuera a morir y mi vida pasara por delante de mis ojos, sería tan poco interesante que tendría tiempo de ver unos anuncios entre medias. ADV

28 May 21:48

All The President's Men [1976, 720p] Robert Redford, Dustin Hoffman - An Incredible paranoid thriller of the Watergate Scandal

by @ProdigalFrog@slrpnk.net

Wiki article: https://en.wikipedia.org/wiki/All_the_President's_Men_(film)

https://slrpnk.net/pictrs/image/22009263-dc7c-4371-ad76-c9a2875d9316.jpeg

Despite 3 Days of the Condor being one of my favorite films, I never got around to watching All The President's Men until a couple days ago.

My god, what I've been missing.

It's truly a masterclass in film making. It's a slow burn, but never feels it. There's always something interesting happening, some new piece of information revealed, tension always building, and acting so damned good I didn't move from the sofa until the end.

There's some really impressive cinematography in this, but something that consistently impressed me was the level of acting of even minor or unnamed side characters, who do virtually as good of a job as the leads in feeling absolutely believable and natural.

If, like me, you just haven't gotten around to this film, I really recommend making it your next watch.

28 May 21:48

Malestar en la judicatura progresista tras el reparto de nombramientos del CGPJ

by Beltenebros

El último Pleno del Consejo General del Poder Judicial (CGPJ) ha desatado una profunda crisis interna en los sectores progresistas de la judicatura después de que el bloque conservador se impusiera en la práctica totalidad de los nombramientos discrecionales aprobados este martes. De las catorce plazas judiciales en juego, doce han recaído en perfiles alineados con el sector conservador, frente a únicamente dos designaciones progresistas. El resultado ha generado un fuerte malestar entre jueces y asociaciones de sensibilidad progresista...

etiquetas: cgpj, tribunal supremo, poder judicial, jueces

» noticia original (mundoobrero.es)