16 diciembre 2025

La mejor manera de aprender

Sigo con las cosas que no le interesan a nadie aunque para mi son sumamente importantes. Mientras más aprendo, más importantes e interesantes las encuentro.

Recordarán que hace unos días tuve el problema de convertir mi antiguo weblosg de Blurty a un formato moderno y cómodo a la vista. 

Con ayuda de la inteligencia artificial de Gemini, más un día y medio dándome cabezasos pude hacerlo usando Python y ahora lo pueden leer -y descargar si quieren- en este link de mi servidor.

Están las carpetas con las entradas de los años 2003, 2004 y 2005, son las primers publicaciones que subí a Internet, cuando me visitaban cuatro gatos y podía escribir con más libertad y soltura. También está el código Python para cambiar el formato de html, que hice con Gemini.

Entonces me pregunté ¿por que no intentar de nuevo cambiar la codificación del respaldo de mi blog? Se trataba solo de insertar una etiqueta a cada archivo html.

Inserté una a mano usando el editor Komposer y funcionó perfecto. El problema era que tenía que hacerlo con 240 archivos html grandes, si insertaba las etiquetas a mano y las subía una a una al servidor me iba a demorar un par de años.

También había tratado antes de hacerlo con inteligencia artificial, probé con Gemini, Copilot, Claude pero todas abortaron a poco de empezar por falta de capacidad.

En fin, el asunto no resultó tan sencillo como imaginaba, probé nuevamente con Gemini y estuve horas dandome vuelta hasta que vi que estaban completamente enredados, pese a que creían tener la solución, ninguno de sus scripts funcionaba.

Luego traté con Git-Copilot y desde el principio ne entregó código más limpio y simple, aunque tampoco funcionaba. Pero ya tenía la idea que la cosa iba bien encaminado. Aprendí y me entretuve un montón. 

Para hacerlo usé el siguiente prompt: 

tengo unas páginas en html en mi servidor tombrad.com/archivoblog/2005 con problems de codificación, me dijiste que había que insertar la etiqueta <meta charset="UTF-8"> en cada página, lo hice manualmente en una página y funcionó bien. Luego te pedi un programa en Python para insertar esa etiqueta automáticamente en todas las páginas del subdirectorio y me dio el script que adjunto, Pero al ejecutarlo sigue mal la codificación pese a que tienen la etiqueta insertada ¿qué puede haber salido mal? También adjunto una página modificada con el script que no funcionó. Una pista adicional es que los archivos a convertir se ven perfectamente en modo local, desde mi disco duro. Las páginas las bajé del archivo Bloger usando "guardar como" ¿puedes sugerir un script de Python que si funcione?

Ya sabía que para una buena respuesta, que no se enrede y se pierda, hay que dar todos los detalles importantes y hay que pedir algo muy concreto, a peticiones generales da respuestas basura. La respuesta esta vez fue la misma que me había dado antes, cuando no pudo hacerlo:

"Lo que describes es un caso muy típico: el problema no está en la etiqueta <meta charset="UTF-8"> en sí, sino en cómo están guardados los archivos en disco..."

Luego me dio varias conjeturas sobre lo que pudo haber salido mal la vez anterior y me entregó un script en Python. que como era de esperar, no funcionó. Entonces me propuso:

¿Quieres que te prepare una variante del script que detecte automáticamente la codificación de cada archivo (usando chardet o charset-normalizer) para no tener que adivinar manualmente? 

Si por favor, fue mi respuesta

Me mandó otro script que tampoco funcionó, así es que puse 

No funcionó, el encabezado de un archivo después de pasarlo por el scipt y subirlo es <!DOCTYPE html> <html class='v2' dir='ltr' lang='es-419' ... etc. 

La respuesta fue Gracias por el fragmento. Veo dos señales importantes:
  • El documento es XHTML (tiene namespaces), y tu <head> comienza con <link> y no aparece ninguna meta de charset.
  • Si en el servidor el encabezado HTTP incluye un Content-Type con un charset que no es UTF‑8, el navegador va a obedecer ese header por encima del <meta> del documento. Eso por sí solo puede romper todo aunque el archivo esté bien convertido.... etc.
Y así siguió con una larga serie de conjeturas, que pasaban por hacer modificaciones en el servidor, lo que no me hacía maldita gracia. A esas altura ya me di cuenta que el asunto era bastante complicado. 

Me mandó otro script que supuestamente era "más robusto" y que tampoco funcionó. Le contesté con un volcado de los errores que daba la ejecución.

Irritado de ver que no avanzábamos a ninguna parte le puse:

¡Pero al modificar la página manualmente funciona bien! a la página que adjunto le agregué la etiqueta usando Notepad y funciona perfecto, puedes chequearla en https://tombrad.com/archivoblog/2006/Tomas/Bradanovic_/abril2006.html

La respuesta fue:
Esa es una información crítica que cambia por completo el diagnóstico... Luego me mandó este código, con el mensaje 

Script corregido y robusto (detección de charset + limpieza + meta al inicio del head) 

Ese fue finalmente que fue el que funcionó ¡BANZAI! Ahora tengo todo el respaldo de mi blog (20 años) en mi servidor online en este link, Excepto por los años 2008, 2012 y 2015 a los que todavía tengo que darle unos retoques al script o los archivos fuente. 

En esos años se puede ver como estaban los archivos antes de transformar las páginas. En resumen:

Algo que parecía muy sencillo terminó siendo un problema endiabladamente complicado. Aquí copié todo el proceso, primero el que funcionó con GIT Copilot, y enseguida el que nunca funcionó con Gemini.

Qué he aprendido de todo esto
La inteligencia artificial es tremendamente útil para escribir código de computación, porque casi todo el conocimiento de programación práctica está en la web -en Github y similares- así es que incluso un ignorante que sabe muy poco de Python como yo puede diseñar una solución con cierta facilidad.

Es como tener a un programador experto por encima del hombro, revisando y haciendo sugerencias. Sin embargo no sirve para cualquiera, para que funcione realmente hay que tener experiencia en programación, aunque no se sepa nada del lenguaje que se está usando porque de eso se encarga la IA.

Pero sin experiencia en como funciona el código, los algoritmos, la depuración y todo eso, no se llegará a ninguna parte. Sobre todo se necesita tener un conocimiento claro y profundo de lo que queremos hacer y de lo que es capaz de hacer una máquina y qué no lo es.

Si quisiera volver a programar profesionalmente -no es el caso- no tomaría ni un solo curso, ni siquiera online, tampoco tomaría un curso de lenguaje, porque eso se aprende haciendo, tomando el código que han hecho otros y recombinando. Solo así se aprende de verdad.

Lo lenguajes de programación -tal como los lenguajes naturales- se aprenden mucho mejor de oído. Nadie aprende a hablar estudiando las reglas gramaticales y nadie escribe buen código "estudiando" programación. Así es con todos los buenos programadores que he conocido.

La inteligencia artificial aplicada a la escritura de código no tiene nada de inteligente, es bruta como cualquier máquina pero si es tremendamente útil para un programador que sabe lo que está haciendo. 

Creo que lo de "inteligencia" no es una palabra adecuada, da la impresión de ser intligente por la fluidez con que responde, pero la inteligenca en este caso está en las preguntas, no en las respuestas.

La inteligencia de las respuestas se parece mucho -a mi modo de ver- a esa clase de inteligencia que tienen los merluzos, que hablan muy bonito e impresionan a los giles. pero en el fondo son más tontos que una puerta.  

En fin, los invito a ver mis weblog de Blurty y de Blogger en línea, si alguien lo quiere bajar completo a su disco duro me avisa y le mando el zip o algún link de donde descargarlo. Son cerca de 8.000 entradas, no hay como aburrirse con eso.

1 comentario:

  1. muy interesante tema, a la mayoría nos debe parecer así, y hay una IA especializada en programación, no recuerdo su nombre, pero dicen que es muy buena, si se me ilumina una neurona paso el dato

    y estoy malo pal trago, sigo afectado de la celebración del domingo, la edad me pasa la cuenta

    ResponderBorrar

"Send me a postcard, drop me a line
Stating point of view
Indicate precisely what you mean to say
Yours sincerely, wasting away
Give me your answer, fill in a form
Mine for evermore
Will you still need me, will you still feed me
When I'm sixty-four"