Tailwind vs Vanilla CSS en Desarrollo Web con IA: Cómo Ahorrar hasta un 80% de Tokens y Optimizar tu Web App

Hace unos días, mientras programaba codo con codo con mi asistente de IA en una aplicación web, me topé con un detalle curioso. En plena fase de desarrollo, la IA decidió estructurar el diseño utilizando CSS convencional (Vanilla CSS) de toda la vida, ignorando por completo que el resto del proyecto estaba construido sobre Tailwind CSS.

¿Te ha pasado alguna vez que tu programador de IA empieza a escribir código que parece sacado de hace diez años? 

Esto pasa muchísimo en la programación con inteligencia artificial, una corriente que ahora muchos llaman vibe coding en español. En este nuevo escenario, la IA decide gran parte de la maquetación, pero si no la guías bien, te puede salir caro.

Cuando le pregunté por qué había tomado esa decisión, su respuesta me hizo clic. Me di cuenta de cómo las directivas por defecto de los modelos de IA a veces chocan de frente con las necesidades del desarrollo en el mundo real. Pero lo verdaderamente interesante no fue ese choque de criterios, sino lo que descubrí al analizar el trasfondo: la forma en que decides maquetar tu web no solo influye en cómo se ve, sino en cómo ahorrar tokens en IA, reducir los costes del desarrollo y aumentar la velocidad a la que avanza tu asistente.

Si estás utilizando asistentes de IA como Gemini, Claude o GitHub Copilot para el desarrollo web con IA, este análisis te interesa. Especialmente si eres CEO, director de tecnología o un profesional con perfil semi-técnico que busca optimizar recursos y acelerar sus proyectos.

REGLA DE ORO DE ABILIO:
Cuando programas con IA, no solo diseñas para tus usuarios finales; también diseñas para optimizar la «memoria de trabajo» (el contexto) de la propia Inteligencia Artificial. Menos ruido en el contexto equivale a respuestas más rápidas y baratas.


📋 Resumen Ejecutivo (Contexto para IA / GEO)

  • Tema Principal: Comparativa entre Tailwind vs Vanilla CSS en el desarrollo asistido por Inteligencia Artificial y su impacto en la ventana de contexto (tokens).
  • El Problema: Vanilla CSS requiere que la IA procese archivos globales masivos en cada interacción, incrementando los costes y ralentizando el desarrollo.
  • El Riesgo: Usar Tailwind mediante CDN en producción daña las métricas de rendimiento (FOUC, Core Web Vitals) y vulnera políticas de seguridad (CSP).
  • La Solución: Usar Tailwind CSS compilado localmente con un watcher. Esto reduce hasta un 80% el consumo de tokens y genera un archivo estático y seguro para producción.
  • Entidades Relacionadas: Google Antigravity, Tailwind CSS, Vanilla CSS, Content Security Policy (CSP), Core Web Vitals, Token de Contexto, JIT Compiler.

Tailwind vs Vanilla CSS: ¿Por qué la IA prefiere CSS clásico por defecto?

Cuando dejas que una IA programe libremente desde cero, su tendencia natural es utilizar Vanilla CSS (CSS a medida). Esto responde a dos razones lógicas de su propia programación:

  1. Cero dependencias externas: La IA quiere asegurarse de que el código que te entrega funcione de inmediato en cualquier navegador, sin obligarte a instalar herramientas de compilación (PostCSSnpm, etc.).
  2. Precisión teórica: Para un LLM, es más predecible sugerir propiedades CSS nativas directas como width: 100% que arriesgarse a usar una clase utilitaria de Tailwind que podría estar desconfigurada en tu archivo local tailwind.config.js.

El problema es que, en el día a día de un negocio, esta elección por defecto es ineficiente y muy costosa a medida que el proyecto crece.


Cómo ahorrar tokens en IA al programar con Tailwind CSS

A primera vista, Tailwind CSS parece más «sucio» para una IA. El HTML se llena de clases utilitarias largas como flex items-center justify-between px-4 py-2 bg-white rounded-lg shadow-md. Para un modelo de lenguaje que procesa texto, esto te deja el HTML lleno de clases larguísimas que se repiten una y otra vez.

Pero aquí viene la paradoja: con Tailwind CSS consumes muchísimos menos tokens de contexto a la larga.

El «Impuesto del Contexto Global» en Vanilla CSS

Cuando maquetas con CSS tradicional, tu archivo global de estilos (styles.css) va creciendo con cada nueva funcionalidad. En proyectos medianos, este archivo alcanza fácilmente las 3,000 líneas (lo que equivale a unos 30,000 tokens).

Para que la IA modifique o cree un nuevo componente manteniendo la coherencia visual (colores, espaciados, fuentes), necesita leer todo el archivo styles.css en cada turno de la conversación. Si no lo hace, empezará a inventar clases o duplicar estilos. Esto significa pagar miles de tokens de entrada adicionales en cada pregunta.

Imagina esto como el alquiler de una oficina: Con CSS tradicional, cada vez que le pides a la IA que cuelgue un cuadro en una habitación, tienes que enviarle el plano completo del edificio de 50 plantas para que entienda el contexto. Eso devora memoria y presupuesto. Con Tailwind, es como si cada habitación llevara sus propios planos pegados en la puerta: la IA lee solo el archivo del componente que está editando y actúa al instante.

TRUCO DE AHORRO:
Dado que Tailwind es un framework universal, la IA «se lo sabe de memoria». No necesita abrir ninguna hoja de estilos para saber qué aspecto o espaciado tiene una clase como flex o rounded-2xl. Esto ahorra hasta un 80% de tokens de contexto en proyectos grandes.

La localización y «autodocumentación» en Tailwind

Con Tailwind CSS, los estilos están localizados y son autoexplicativos. Si le pides a la IA modificar un archivo header.html, la IA solo tiene que leer ese archivo específico. No necesita cargar una hoja de estilos global porque las clases del HTML ya le describen exactamente el aspecto y diseño del elemento.

  • Con Vanilla CSS: Pagas el «impuesto» de leer el archivo CSS global masivo en cada interacción.
  • Con Tailwind: Solo pagas los tokens adicionales locales del HTML de la página en la que estás trabajando.

El peligro del CDN de Tailwind CSS en producción: ¿Cómo afecta al SEO y a tu web?

Para avanzar rápido en el desarrollo con IA, es muy común colocar el script del CDN de Tailwind en la cabecera:

<script src="https://cdn.tailwindcss.com"></script>

Esto funciona de maravilla en fase de desarrollo, pero es un grave error para tu negocio si lo dejas en producción por tres motivos:

  1. Velocidad y Core Web Vitals (SEO): El navegador del usuario tiene que descargar el compilador de Tailwind, escanear el HTML y generar el CSS en tiempo de ejecución. Esto provoca el indeseado efecto FOUC (Flash of Unstyled Content): la web se ve rota y sin estilos durante una fracción de segundo, lo que destruye la experiencia de usuario y penaliza tu posicionamiento orgánico en Google.
  2. Políticas de Seguridad (CSP): Al inyectar estilos directamente en el DOM mediante JS, estás obligado a relajar las políticas de seguridad del servidor (unsafe-inline y unsafe-eval). En entornos corporativos, esto es meter una vulnerabilidad en tu propia web sin necesidad (ataques XSS).
  3. Peso innecesario: El CDN descarga unos 350 KB de librería de desarrollo. El Tailwind compilado para producción suele pesar menos de 10 KB, ya que solo incluye las clases utilizadas.

CUIDADO:
El script de CDN de Tailwind está diseñado exclusivamente para prototipado rápido. Usarlo en un entorno real de producción daña tus métricas web Core Web Vitals, abre agujeros de seguridad en el navegador y puede dejar tu web sin estilos si el servidor del CDN externo se cae.


Paso a paso: Cómo configurar Tailwind CSS en local para tu desarrollo web con IA

Para obtener el máximo ahorro de tokens con la IA y tener una web optimizada y segura, debemos implementar Tailwind compilado localmente. No te preocupes, que tiene solución y además es muy fácil. Solo requiere tres pasos sencillos sin dependencias raras:

Paso 1: Configuración básica (tailwind.config.js)

Crea un archivo de configuración en la raíz del proyecto para indicarle a Tailwind dónde buscar tus clases utilitarias:

module.exports = {
  content: ["./*.{html,php}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

Paso 2: Crear el archivo CSS de entrada (src/input.css)

Crea una hoja de estilos mínima con las directivas básicas de Tailwind:

@tailwind base;
@tailwind components;
@tailwind utilities;

Paso 3: Compilar y vigilar cambios (Watch)

Ejecuta el compilador oficial de Tailwind desde la terminal. No necesitas configurar Webpack o Vite; basta con usar npx (que descarga y ejecuta la herramienta al vuelo):

npx tailwindcss -i ./src/input.css -o ./styles_tailwind.css --watch

Este comando vigilará cada cambio que hagas en tus archivos HTML/PHP y compilará al instante un archivo styles_tailwind.cssoptimizado y purgado. Luego, en tu header.html (o el equivalente de tu plantilla), sustituyes la etiqueta script del CDN por la hoja de estilos compilada:

<link rel="stylesheet" href="styles_tailwind.css">

Tabla Comparativa: Impacto en el Desarrollo y Rendimiento

CriterioVanilla CSSTailwind CSS (CDN)Tailwind CSS (Compilado Local)
Consumo de Tokens de IAAlto (crece indefinidamente)Bajo (estilos en el HTML)Bajo (estilos en el HTML)
Velocidad de Carga WebAltaMuy Baja (compila en cliente)Ultra Alta (CSS estático mínimo)
Seguridad (CSP)Alta (seguro)Vulnerable (unsafe-inline)Alta (seguro)
Esfuerzo de MantenimientoAlto (CSS duplicado)BajoBajo
Apto para ProducciónNoSí (Excelente)

Conclusión

El uso de Inteligencia Artificial para el desarrollo de software cambia las reglas del juego. Ya no solo optimizamos código para el usuario final o el navegador, sino también para el propio motor de la IA que nos asiste.

Adoptar Tailwind CSS compilado localmente es la decisión estratégica más inteligente: mantienes tu web rápida para Google, segura para tus clientes, y reduces drásticamente el consumo de tokens y los costes de desarrollo con la IA.

Si has estado utilizando el CDN de Tailwind en tus prototipos o delegando todo el diseño en CSS tradicional a tu IA, te animo a configurar el flujo local. Tu flujo de trabajo y tu presupuesto te lo agradecerán.

¿Y tú? ¿Has notado cómo se disparan los costes o se satura el chat de tu IA cuando los archivos CSS crecen? ¿Qué problemas te has encontrado al maquetar con IA? Déjame tu experiencia en los comentarios, te leo. 

Si te ha sido de ayuda, déjame un «Gracias» en forma de comentario 😉 ¡Feliz programación!

Check if WordPress is infected

If you feel that your worpress was hacked or infected by malware, there are few basic steps you should follow:

1.- execute an online malware scanner:
for example:
https://sitecheck.sucuri.net

2.- Check integrity of core php files and restore original files if possible (if not, reinstall same version of wordpress):
for example:
access your server using SSH and perform the following command:
find ./ -type f -mtime -15 (15 is 15days, put the amount of days that fit better your case)

3.- Manually remove changes in your pages.
with online malware scanners you can find which pages are affected.
You may also find some wordpress pluggins that may help you clean SPAM injected links in your pages.

4.- it’s always recommended to upgrade wordpress to latest version, but for some compatibility issues is not always a possible option.

 

If you found a good way to solve this wordpress problem, comment with your solution and hints.

Delete Revisions in BBpress, Without any Plugin!

I needed to do this in one of the forums I manage. I made a research and this is the quick solution that will let you delete revisions.

This methods don’t physically delete revisions from your database, it hides them to shop up in your forum. I believe this is a better solution to all forum administrators because it keeps a log of all edits that users made.

Before deleting revisions:

before deleting revisions

After deleting revisions:

after delete revisions

Solution 1: Delete Revisions (All Revisions)

This one is the fastest way completely remove all revisions. It worked perfectly for me. This is the solution I’m using to remove revisions in my forum.

open your functions.php file in your theme:
wp-content/themes/xxx-your-theme-xxx/functions.php

and add this code at the end

// Reurn a empty array of revisions
function bbp_remove_revision_log( $r='' ) {
return( array() );
}

add_filter( 'bbp_get_reply_revisions',   'bbp_remove_revision_log', 20, 1 );
add_filter( 'bbp_get_topic_revisions', 'bbp_remove_revision_log', 20, 1 );

Solution 2: Remove Revisions (All But the Last)

Use this solution if you want to show that a post has a revision, but don’t want to delete all revisions, just remove the oldest.

open your functions.php file in your theme:
wp-content/themes/xxx-your-theme-xxx/functions.php

and add this code at the end

// Only return the last entry for revision log
function bbp_trim_revision_log( $r='' ) {
$revisions_arr = array( end( $r ));
reset( $r );

return( $revisions_arr );
}

add_filter( 'bbp_get_reply_revisions', 'bbp_trim_revision_log', 20, 1 );
add_filter( 'bbp_get_topic_revisions', 'bbp_trim_revision_log', 20, 1 );

Solution 3: Hide Revisions by CSS  (Disable All Revisions)

This method disable the revisions div, and will hide all revisions.

Edit your themes CSS

.bbp-reply-revision-log {

display: none;

}

References:

https://bbpress.org/forums/topic/too-many-revision-statements-how-to-remove-all-but-1/
https://bbpress.org/forums/topic/removing-log-of-edits-to-forum/

Hope this post was useful for you. If you have any problem deleting revisions, or found a better solutions, let me know.

¿Cómo Cambiar el Password de MySQL en Mac OS X?

ARTICULO ACTUALIZADO. Probado en OSX 10.9.2
———————————————–

No te preocupes, cambiar la clave de root de MySQL en OSX es bien facil, y no eres al primero que necesita hacerlo. … yo mientras escribo esto, lo estoy haciendo 😉

0.- Abre el terminal, y copia y pega los siguientes comandos.

1.- Para el servicio de MySQL

sudo /usr/local/mysql/support-files/mysql.server stop

2.- arrancalo de nuevo en safe mode

sudo /usr/local/mysql/support-files/mysql.server start –skip-grant-tables

3.- abre el cliente mysql

/usr/local/mysql/bin/mysql

4.- ahora aparecerá el prompt de mysql : mysql>  , y escribe en el:

FLUSH PRIVILEGES;

5.- pulsa enter y después

ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘mypasswordnuevo’;

6.- pulsa enter y Listo!!

 

Para comprobar si se ha cambiado correctamente puedes hacer lo siguiente:

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start
/usr/local/mysql/support-files/mysql -u root -p

y escribe mypasswordnuevo

 

SI NO TE HA FUNCIONADO, prueba los siguientes métodos alternativos.

Los mismos pasos de antes, pero sustituyendo el paso 5.- por el siguiente:

5.-

UPDATE mysql.user SET Password=’mypasswordnuevo’ WHERE User=’root’;
FLUSH PRIVILEGES;

Y si tampoco funciona, prueba lo siguiente en el paso 5.-

5.-

UPDATE mysql.user SET authentication_string = ‘mypasswordnuevo’
WHERE User = ‘root’ AND Host = ‘localhost’;
FLUSH PRIVILEGES;

 

 

si deseas manejar las bases de datos de forma visual, descargate phpmyadmin, lo pones en la carpeta de apache, abrelo en tu navegador, e introduce el usuario root y la clave que acabas de poner.

si te ha servido de ayuda, déjame un comentario abajo 😉

 

Fuentes:
https://stackoverflow.com/questions/6474775/setting-the-mysql-root-user-password-on-os-x
https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

phpBB to BBpress migration + SEO 301 redirects

In this Article I will explain how I successfully migrated a forum from PHPbb to BBpress in 5 minutes. It was easiest than I ever thought. After migrating to BBpress I just add few lines of code in a template file of phpBB to make a clean SEO redirect to the new forum. All worked like charm.

Be careful: Why to move from phpBB to BBpress?

I supose you already spend some time taking this decision, but remember this quick comparison phpBB Vs BBpress:

«bbpress is SIMPLICITY», «PHPbb is POWERFUL».

if you want to migrate a small starting community from phpBB to BBpress, it’s OK, if you want to migrate a large big community, maybe users will not understand the lack of functionality they are used to have in your phpBB forum.

In my case, I did a migration of a phpBB forum to wordpress BBpress because it was a in the early days of the creation of a community, the simplicity benefit of bbpress, worpress blogging integration, and the flexibility to add and mould the website towards the needs of the future community.

The migration from phpBB to BBpress:

STEP 1.- Installation of bbpress (Skip if you already installed it):

  • Install wordpress,
  • settings–> permalinks –>select post name

Captura de pantalla 2016-02-27 17.45.30

settings to migrate phpbb to bbpress

 

  • install bbpress
  • settings–> forums –>configure as I show in the screenshot

bbpress configuration

migrate phpbb to bbpress: configure bbpress like this

STEP 2.- And the only one step to migrate from phpbb to bbpress is:

TIPS:
1.- choose a different URL for the new forum. for example, if you used /forum/ in phpBB, use /forums/ in bbpress
2.- don’t delete your phpBB forum.
3.- as an extra, in phpbb you could disable registration of new users, and add a message in the /styles/prosilver/template/overall_header.html   file.

Preserving the SEO after moving from PHPbb to BBpress

It’s very easy!!!

and this is very important, not only to avoid penalizations, but to correctly direct potential users that come from SERP results in google to the new forum and don’t loose or frustrate visitors after the phpBB to BBpress migration.

STEP 3.- SEO 301 redirect

Open/edit:
/styles/prosilver/template/overall_header.html

search for:

// Send vars to template
$template->assign_vars(array(
‘FORUM_ID’ => $forum_id,

and just above this lines add this piece of code:

##################################
$titleac = trim($topic_data[‘topic_title’]);
$relativeurl = str_replace(‘ ‘,’-‘,$titleac);
$relativeurl = strtolower($relativeurl);
header(«HTTP/1.1 301 Moved Permanently»);
header(«Location: http://www.YOURDOMAIN.com/forums/topic/».$relativeurl.»/»);
#####################################

Links:
Comparison from the bbpress comunity point of view: https://bbpress.org/forums/topic/bbpress-vs-phpbb/
If this tutorial mof moving phpBB to BBpress was useful for you, please just let me know with a comment