Saltar al contenido
Diego de Pablos Ingeniero Informático

Blog

Por qué he rehecho esta web desde cero

En casa del herrero, cuchillo de palo. Esta web la monté en 2017 y desde entonces no la había tocado. Funcionaba, se veía razonablemente bien, y cada vez que me acordaba de ella pensaba «algún día». Ese día ha llegado, y he acabado tirándola entera y levantándola de cero.

Va este artículo para contarlo sin tecnicismos: de dónde partía, qué me encontré al abrir el capó, qué se rompió por el camino y en qué ha quedado.

De dónde partíamos

La web estaba hecha con WordPress, que es el programa con el que está hecha buena parte de internet. Nada malo en eso. El problema era la versión: la 4.8, de 2017, sobre un lenguaje —PHP— en una versión que dejó de recibir actualizaciones de seguridad en diciembre de 2018.

Traducido: durante casi ocho años ha estado abierta al público una puerta cuya cerradura ya nadie fabricaba ni reparaba. No es que fuera a pasar algo; es que si pasaba, no había a quién llamar.

Y había señales. Cuando me puse a mirar los registros del servidor descubrí que un solo día había recibido 2.578 intentos automáticos de adivinar la contraseña, todos contra el mismo punto de entrada. Eran casi la mitad de todas las visitas que recibía la web ese día. Nadie me estaba atacando a mí en particular: son robots que recorren internet entera probando puertas.

El detalle que más me hizo pensar fue otro, y más tonto. Al revisar el servidor me di cuenta de que la web llevaba cinco días caída y no me había enterado. Ni yo, ni nadie. Eso dice bastante sobre el cuidado que le estaba dedicando.

Qué he hecho

He cambiado la cocina entera, no los azulejos.

A la izquierda, la pila antigua: navegador, Apache, WordPress sobre PHP 5.6 y una base de datos MySQL. A la derecha, la nueva: navegador, el mismo Apache, la aplicación escrita a medida y un único fichero de 216 KB.

La diferencia importante no es que una columna sea más moderna que la otra. Es la cantidad de cosas que tienen que ir bien para que veas esta página.

Antes, entre tu navegador y mi texto había un programa enorme, escrito por mucha gente, con decenas de complementos, una base de datos aparte y un lenguaje sin mantenimiento. Ahora hay un programa pequeño que hace exactamente lo que necesito y nada más, y los datos caben en un solo fichero de 216 kilobytes —menos que una foto del móvil—.

Esa es la idea de fondo: una web personal no necesita una central eléctrica. Necesita una bombilla que no se funda.

Cómo se ha hecho, por partes

No se hace de una sentada, y sobre todo no se apaga lo viejo hasta que lo nuevo está probado.

Las siete fases del proyecto, todas completadas: poner a salvo lo viejo, rescatar el contenido, los cimientos, la web nueva, el panel de administración, la convivencia de las dos webs y la mudanza del dominio.

Poner a salvo lo viejo. Antes de tocar nada, copia completa de todo: ficheros, base de datos, imágenes. Y de paso, cerrar lo más urgente de la web antigua, porque iba a seguir en pie unas semanas más.

Ahí aparecieron cosas incómodas: ficheros de pruebas olvidados en 2015, una clave de acceso a un servicio de Google y una contraseña escrita en texto plano, todo ello accesible desde internet para quien supiera dónde mirar. Retirado y anotado para cambiar esas claves.

Rescatar el contenido. Los textos, los proyectos, las opiniones, las fotos: todo eso estaba dentro de WordPress y tenía que salir de ahí sin que se perdiera un acento. Se hizo con un programa que lo extrae solo. No he copiado nada a mano, que es donde se cometen los errores y donde se pierde la paciencia.

Los cimientos. Decidir cómo se guarda cada cosa: una experiencia profesional, un proyecto, una tecnología. Suena aburrido y es lo que más se nota después. Un ejemplo: en la web vieja aparecían cinco veces seguidas los nombres de las mismas dos consultoras, porque el sistema no distinguía entre para quién trabajas y en qué cliente prestas el servicio. Ahora son dos cosas distintas, y la trayectoria se lee de un vistazo.

La web que se ve. Diseño nuevo, hecho para leerse: sin ventanas emergentes, sin avisos de cookies —porque no hay cookies que avisar—, sin fuentes ni contadores que se descarguen de otras empresas. Todo lo que carga esta página sale de este servidor. Y mi dirección de correo ya no aparece escrita en ninguna parte: hay un formulario, que es lo que los recolectores de direcciones no saben rellenar.

El panel para editarla. Una zona privada para cambiar el contenido sin tocar nada técnico. Sólo responde desde la red de casa, y aun así pide contraseña.

La convivencia. Las dos webs funcionando a la vez durante un tiempo, la vieja de cara al público y la nueva esperando en una puerta lateral, para poder compararlas página a página sin que nadie de fuera notara nada.

La mudanza. Cambiar el cartel de la puerta. De eso hablo más abajo, porque resultó ser la parte más corta y la que más cosas enseñó.

En dos idiomas, y con el currículum en PDF

Dos cosas que no estaban en el plan y acabaron entrando.

Se escribe una sola vez en español. De ahí salen tres cosas: la web en español, la web en inglés traducida automáticamente, y el currículum en PDF en cualquiera de los dos idiomas. Si se corrige una traducción a mano, queda marcada y ya no se vuelve a sobrescribir.

La web está entera en español y en inglés. Yo escribo siempre en español, y la versión inglesa se genera sola al guardar. Lo importante es la regla de convivencia: si alguna vez corrijo una traducción a mano, esa frase queda marcada y no se vuelve a sobrescribir nunca. Sin eso, cualquier retoque mío duraría hasta la siguiente vez que tocara el texto original.

Y el currículum se puede descargar en PDF, en el idioma que estés viendo. No es un fichero que yo suba y me olvide de actualizar: se arma en el momento con los mismos datos que ves en pantalla, así que no puede quedarse desfasado respecto a la web. Desde el panel elijo qué bloques entran y en qué orden.

En qué se nota

Esto se puede medir, así que lo he medido: las dos webs, en el mismo servidor, una al lado de la otra.

Comparativa. Tiempo en responder: 1,39 segundos la web vieja frente a 0,10 segundos la nueva. Peso de la portada: 66 kilobytes frente a 41. Ficheros que pide el navegador: 28 frente a 14.

Catorce veces más rápida. Y de los 14 ficheros que pide ahora la portada, 11 son las imágenes de los proyectos: de «maquinaria» sólo queda una hoja de estilos y un ayudante de 50 KB.

Las fotos también se han puesto a dieta. Cada imagen se guarda en tres tamaños y el navegador elige el que le conviene según la pantalla, así que en el móvil no te descargas una imagen pensada para un monitor grande. Pesan un 76 % menos que los originales.

Por debajo hay algo que no se ve pero que es lo que me deja dormir: 432 comprobaciones automáticas que se ejecutan cada vez que se cambia algo. Son pequeñas pruebas que verifican que el correo sale, que las direcciones antiguas siguen llevando a su sitio, que los colores tienen contraste suficiente para leerse. Si algo se rompe, salta antes de llegar aquí. Ya han cazado varios fallos que yo no habría visto.

Cómo se actualiza ahora

Escribes en el panel privado, queda guardado en la base de datos, y se ve al instante en la web pública. Además la base de datos se vuelca a una copia en texto legible, que se puede volver a cargar.

Lo importante de este dibujo es la flecha de abajo. Todo el contenido se puede volcar a un fichero de texto normal, que se abre con cualquier editor, se lee sin ningún programa especial y se puede guardar donde uno quiera. Y desde ese fichero se puede reconstruir la web entera en otro ordenador.

Es la lección de la web anterior: lo que sólo sabe leer un programa concreto está atrapado en ese programa. Y los programas caducan.

La mudanza, y lo que se rompió

El cambio de la web vieja a la nueva se hizo el 9 de agosto de 2026 a las 18:24, y consistió en cambiar un fichero de configuración y decirle al servidor que lo releyera. Nadie se desconectó. La web antigua se quedó encendida una semana más, escondida del público pero lista para volver en treinta segundos si algo hubiera ido mal.

No hizo falta. Pero sí aparecieron tres cosas que merece la pena contar, porque lo interesante de un proyecto así no es la lista de lo que salió bien.

La web no sabía contestar a una pregunta muy concreta. Existe una forma de preguntarle a una página «¿sigues ahí?» sin llegar a descargarla; la usan los vigilantes de caídas, los comprobadores de enlaces y parte de los buscadores. La web nueva respondía «no sé hacer eso» a todas sus direcciones. Ningún visitante lo habría notado jamás, y sin embargo era justo lo que habría hecho que un servicio de vigilancia diera la web por caída. Apareció al repasar el día siguiente.

Un despliegue se llevó por delante un texto que acababa de escribir. Había editado la presentación desde el panel, y una publicación posterior la sobrescribió con la versión anterior. El texto se recuperó de una copia automática, pero el problema de fondo era otro: el aviso no existía. La copia se hacía en silencio, así que uno no se enteraba de haber perdido algo hasta echarlo en falta semanas después. Ahora el proceso se planta y avisa antes de sobrescribir nada.

Y el sistema de copias de seguridad borraba la copia que acababa de hacer. Ésa es la que más gracia tiene. La regla era «conserva las treinta últimas», y resulta que mientras hubiera menos de treinta, el programa entendía «no conserves ninguna». O sea que habría funcionado perfectamente… a partir del segundo mes. Apareció al probarlo imitando las condiciones exactas en las que se ejecuta de madrugada, que no son las mismas que cuando lo lanzas tú a mano.

Las tres tienen algo en común: ninguna se ve mirando la web. Se ven mirando lo que pasa cuando nadie mira.

Las copias de seguridad

Cada noche a las 3:15 la web en marcha genera un paquete de 1,6 megabytes con el contenido, las imágenes, las claves y el código con toda su historia. El paquete se guarda en dos discos en espejo, distintos del disco donde vive la web. Antes de darlo por bueno, el propio proceso abre el paquete y comprueba que se puede leer.

Cada noche, a las tres y cuarto, la web se copia entera en un paquete de 1,6 megabytes: los textos, las imágenes, las claves de los servicios y el programa completo con toda su historia de cambios. Va a parar a dos discos en espejo, que no son el disco donde vive la web: una copia en el mismo sitio que el original no protege de lo único que de verdad falla, que es que el sitio se estropee.

Dos detalles que me parecen los importantes. El primero: antes de dar la copia por buena, el propio proceso la abre y comprueba que se puede leer. Una copia que nadie ha abierto nunca no es una copia, es una suposición.

El segundo: la probé al revés. Cogí una copia y levanté la web entera desde cero con ella, en un rincón apartado del mismo servidor, sólo para ver si arrancaba. Arrancó. Hasta ese momento yo tenía copias; a partir de ese momento tenía copias que sirven.

Y ahora… el plot twist

No fui yo, fue Claude. Un prompt, unas cuantas iteraciones y en un fin de semana hemos montado esta web desde cero. Yo dirigía, ella programaba. Y ahora el doble plot twist, esta misma estrada del blog que has leído también la ha generado Claude. El futuro de la ingeniería del software es IA y es AHORA.