Episodio 014 - La Programación Web se cae de la telaraña
De Panda Disk System
Metadatos
- Número: 014
- Título: La Programación Web se cae de la telaraña
- Invitados:
- Duración: 0:29:11
- Publicado: 2025-04-28
- Categoría: Opinión
- Etiquetas: web, actualizaciones
Escuchar
(De momento solo disponible en iVoox)
Descripción
https://www.ivoox.com/014-la-programacion-web-se-cae-la-audios-mp3_rf_145703991_1.html
Nos hemos acostumbrado a hacer muchas cosas en internet. A que todo esté basado en sitios web o en aplicaciones de móvil. O que incluso programas de escritorio necesiten internet para funcionar. Todo depende de que sus servidores sigan funcionando. ... te puedes imaginar por dónde van los tiros.
Como programador web, estoy recuperando mis proyectos antiguos, y me ha dado por pensar al respecto. Te cuento por qué las webs no son duraderas. Por qué todo se queda desfasado y se vuelve inseguro (así como primera excusa).
Me pongo un poco técnico, pero intento no pasarme.
Referencias
Sintonía: https://opengameart.org/content/minor-inconvenience-access-denied-2a03
Transcripción
(Generada con Whisper ggml-medium, sin revisar)
Muy buenas, soy titanio verde y estás escuchando Panda Disk System cultura en peligro de extinción. ¿Y qué se ha extinguido hoy? Pues bastantes aplicaciones web o bastantes páginas web programadas a lo largo del tiempo. Aquellas que son simplemente texto, título, tablas, como mucho, pues seguirán funcionando perfectamente hoy día. Mi ejemplo favorito de esto es la Motherfucking Website, que tiene más que suficiente con los estilos por defecto que trae el navegador. Times New Roman, Heading 1 o Heading 2, Subrollado, Negrita, enlaces y ya está. ¿Para qué más? No necesitas ningún framework de Javascript de 500 megabytes para poder mostrar animaciones chulas. Llevo ya nueve años trabajando como programador web, antes de ello fui técnico de sistemas y durante los últimos años dentro de sistemas y de tratar con software corporativo, a cada cual más horrible, más difícil de instalar, pero que cumplía las funciones que se le pedían y reunían la información que necesitaban, aunque fuera pagando miles de euros al mes. Fue cuando decidí, oye, seguro que yo puedo hacerlo mejor o seguro que puedo contribuir a hacer softwares más estables, mejor presentados, mejores para el usuario, en general. Y sí, en parte es cierto, en parte me topé con... Bueno, fui entendiendo por el camino por qué suelen ser así, que ver el principal motivo es porque no contratan a 20 programadores trabajando a la vez para garantizar la calidad en todos los aspectos en un tiempo adecuado. Hace falta mucha gente y en bastantes casos pues o no se quiere pagar o no es posible meter a tanta gente porque colisionan entre ellos, porque no pueden tocar exactamente la misma parte y dividir esas tareas suele ser complicado. Hay una frase muy común cuando se habla sobre gestores de proyectos, vamos, project managers, jefes de producto, etcétera, que es "no puedes tener a un bebé en un mes juntando a 9 mujeres". Como programador pues quería contaros una experiencia que estoy teniendo últimamente. Como Adalid de la preservación del arte, del conocimiento de los videojuegos, etcétera, que me he estado presentando últimamente, a menos para las poquitas personas que escuchan este podcast y para mí mismo, estoy haciendo un ejercicio que debería haber hecho hace mucho tiempo o más que como ejercicio algo que no debería haber dejado abandonado durante tanto tiempo, que son mis propios proyectos. He hecho bastantes cosas a lo largo de mi vida. Foros, fansubs, traducciones, he escrito cosas, he diseñado cosas, he tenido, pues bueno, he ido probando un poco de todo. He practicado el piano, he ido a clases de diferentes cosas, he intentado aprender diferentes cosas, aprender idiomas y todo eso. Mi crisis de los 40 es muy larga. Entre estos proyectos se encuentran pues varias piezas de software que me han servido principalmente como manera de aprender a programar. Mi primer intento fue a los, tal vez a los 13 años, que mis padres me compraron el típico fastículo de kiosko de "aprende a programar" y te traía un CD-ROM con una suite completa para programar. Esto era Delphi, la versión 1 de Delphi que es para programar interfaces gráficas para Windows basadas en Object Pascal. En aquel momento pues no tenía ni idea ni de Pascal, ni de BASIC, ni de ningún lenguaje, pero mis padres sabían que a mí los ordenadores me motivaban mucho y qué mejor que ponerme a programar cosas. Incluso mi padre supo programar un par de cosas en BASIC en su Commodore 64. Así que tan difícil no debía ser. Y bueno, como un chavalín con mucho tiempo libre, pues fui probando a poner botoncitos, poner campos de texto, poner algún temporizador para aquí y para allá, páginitas de este y del otro, colorcitos. Luego no entendía cómo guardar opciones o guardar lo que estaba haciendo en un blog de notas improvisado. Pregunté en un foro sobre Delphi y ahí me preguntaron "amigo, deberías aprender a programar". Y sí, algo aprendí entonces. Y a lo largo de los años pues he ido aprendiendo así muy a mi ritmo, muy con calma. Y desde mi primer proyecto, que era un blog de notas así visual con colorcitos que guardaba el texto y después un juego de estrategia de solo texto, de gestionar supervivientes en una tribu post-apocalíptica, pues nada, fui aprendiendo cositas. Fui descubriendo mi gusto por la programación, el cual dejé de lado durante bastante tiempo, hasta los 20 típicos que mi jefe de sistemas, donde estaba trabajando entonces, estaba programando aplicaciones internas y yo le miraba con ojitos de "¿puedo ayudar? ¿puedo ayudar? No, encárgate de estas otras tareas para que yo pueda concentrarme y terminar con estas aplicaciones cuanto antes. Esto requiere mucha concentración". Y vale, no se lo cuestioné, pero fui aprendiendo por mi cuenta por las tardes hasta que me vi con suficiente nivel, me presenté en un par de empresas, vamos, fui buscando ofertas de trabajo y así es como me fui de Ibiza a Mallorca, donde había trabajo de esto, a Punta Pala. Y ahí empezó mi aventura, empecé de cero más o menos. Y bueno, gané bastante diversión y bastante emoción, todo ese pico de dopamina, de aprender cosas y ver que lo que produces con tus manos hace resultados. Acompañado de, bueno, mucho estrés, mucha ansiedad, de compañeros idiotas, clientes idiotas, etcétera. Pero eso es otra historia que la dejo para mis psicólogos. El caso es que para este trabajo, pues, llevé a cabo un par de proyectos por mi cuenta basados en web, de los cuales estuve orgulloso en su momento. Era simplemente una página de chistes de Persona 4, una reencarnación de aquel juego de estrategia con Subprevivientes y un juego de 3 en raya, controlado totalmente por voz, apto para ciegos. Yo en aquella época iba totalmente hacia la programación web. Me encantaba que con simplemente abrir un navegador y entrar en una página ya pudieras hacer cosas, no solamente mirar información. Todas las posibilidades de interactividad que ofrecía JavaScript y que ha seguido ofreciendo y sigue ofreciendo y seguirá ofreciendo, pues me emocionaba mucho. Toda la comunicación asíncrona, todos los cambios de estilos, de funciones, pasar de una página a otra, sin tener que recargarlo todo cada vez. Todo eso me parecía emocionante, aunque no lo suficiente como para especializarme en JavaScript. Y bueno, conseguí que todo eso funcionase en los navegadores de la época. Ahora bien, aquí viene el drama de la preservación. Las páginas web no son eternas. Sí, a ver, puedes tener la página guardada, es un archivo o varios archivos digitales al fin y al cabo. Lo sobres en un navegador y te tienen que funcionar, pues depende de que estén hechas. Si es simplemente texto y si contiene imágenes las cuales estén accesibles y guardadas al mismo nivel, igual que si tiene audio, estilos propios, cualquier cosa así adosada al contenido de la página, pues sí, te debería funcionar independientemente del soporte, del sistema operativo que estés utilizando. Ahora bien, si utilizas JavaScript mínimamente complejo, pues habrán partes que puede que dejen de funcionar en el futuro, o que funcionen según el navegador que estés utilizando. Esto concreto era un drama muy importante cuando Internet Explorer estaba en la cumbre. Internet Explorer tenía varias funciones exclusivas que si las intentabas abrir en Netscape Navigator, por ejemplo, pues no te iba a funcionar ni para atrás porque era propiedad de Microsoft, igual que Netscape era más avanzado en otras cosas. La guerra de los navegadores dio bastantes quebraderos de cabeza a los programadores web de la época. Luego pues Microsoft se fue rindiendo y fue adoptando los estándares propuestos por la World Wide Web Consortium, W3C, que es lo que se supone que deben adaptar todos los navegadores web para funcionar de igual manera. Aplicado tanto a las etiquetas HTML, a lo que define el contenido, como a CSS para definir los estilos como a JavaScript, aunque esto ya está más complicado. Google programó su propio motor de JavaScript que va mucho más rápido y mucho más fluido que la competencia y eso le permitió, entre otras cosas, poder montar versiones offline o bueno, versiones independientes, autónomas del navegador para ejecutar una web como si fuera una aplicación aparte. De ahí nació Electron y por culpa de eso es por lo que tenemos bastantes aplicaciones de escritorio, vamos, para ordenador, que en esencia son solamente una página web. Un ejemplo muy famoso sería Discord o Microsoft Teams, que los abres y son prácticamente lo mismo que si los abres desde el navegador web. La única diferencia es que lo tienes en una ventanita aparte y tendrás menos problemas para interactuar con el hardware. Vamos, te va a estar pidiendo menos permisos y también pues ellos tienen más control sobre las cookies que meten, así te pueden espiar mejor. Este último es el principal motivo por el cual las aplicaciones de móvil siguen usándose para todo. Hubo un momento en el que parecía que iban a desaparecer las aplicaciones de móvil, que con navegador web ya bastaba. Firefox lanzó su propio sistema operativo para móviles para hacer competencia con Android, aunque era también núcleo de Linux, en el cual todo eran páginas web. Todas las aplicaciones eran también páginas web dentro de su propio contenedor, pero con la filosofía de Mozilla de entonces. Toda privacidad, toda accesibilidad, qué bonito era en aquella época. De hecho yo tuve un móvil de ese tipo, el ZTE Open, creo que se llamaba, costaba unos 50 euros. Era muy barato, era muy gordote, el diseño me gustaba, era bastante redondito, le daba golpecitos y sonaba a hueco, pero también eso lo volvía bastante resistente. El problema es que ya nació obsoleto, tenía demasiado poco procesador para lo que ya pedían muchas webs entonces, así que apenas lo puedo usar para nada. Ni siquiera tenía espacio para instalar gran cosa. Lo que traía de serie tampoco era nada del otro mundo, ni siquiera el reproductor de música. Han habido otros experimentos por el estilo, pero ninguno dio suficiente fruto. Ninguno llegó al nivel de interacción con las APIs del sistema operativo que se esperaba. No tenían suficiente control sobre el hardware y esas cosas, o sea, quedó en una intención. Y yo pues me lo tragué bastante. ¿Y cuál ha sido el precio? Pues que, por ejemplo, mi juego de 3 en raya actualmente no funciona. Aparte de porque mi nivel de programación de javascript en aquel entonces dejaba bastante que desear, y sigue dejando bastante que desear hoy día, no es mi fuerte, se basaba principalmente en una API de reconocimiento de voz que en aquel momento, o sea, estaba propuesta por los estándares, pero solo funcionaba dentro de Google Chrome, o más concretamente en Chromium, en la base de Google Chrome y que luego ha sido de Brave, de Opera, de Microsoft Edge y de muchos otros navegadores. O bueno, Chromium, más concretamente WebKit. WebKit es el motor, perdón. Para que esta API funcione pues tiene que ser en una página segura y siguiendo un orden concreto para poderla ejecutar, o vamos, para poder pedir permisos al usuario y poderlo ejecutar. Y de aquí pues manda lo que graba a los servidores de Google, ahí lo interpretan y te devuelve en el resultado, lo que ha entendido en ese momento. Actualmente hay muchas más opciones de reconocimiento de voz o de convertir voz a texto, pero implementarlo en mi proyecto pues ya requiere reescribir bastantes cosas. También la interacción con el sonido pues se ha roto. Bastantes eventos que utilizaba para detectar cuando está sonando un fragmento de voz que yo he incorporado al juego para indicar "es tu turno, di el número de casilla" o "ahora juegan las blancas o las negras". Pues bastantes estos eventos ahora no funcionan y después de un rato no sé cómo arreglarlo. Así que ahora mismo este proyecto no funciona. Haré algún tejemaneje por mi cuenta para grabar una demostración y esa será toda la constancia que quede, más allá de que seguiré dejando el proyecto totalmente público en GitHub por si alguien quiere curiosear o quiere hacer algo con él. La página de hechistes de Persona 4 tenía un backend de PHP, el cual hoy día está tan obsoleto que no lo puedes ejecutar en ninguna parte, o a ver, de alguna manera puedes, pero con muchos riesgos de seguridad y bueno ningún hosting en su sano juicio te lo va a permitir. Tendría que reescribirlo desde cero, lo cual, a ver, aquí si tengo experiencia me llevaría un par de tardes, pero me puse a pensar ¿cuánta gente va a usar la mayoría de funciones de esta página? que seguramente la mayoría pues solo la verán una vez y ya está. Todo el resto de funciones para publicar nuevos hechistes, para marcar "me gusta", para ver cuál ha sido el más popular, incluso moderación de hechistes, ¿pa qué? Lo que he hecho ha sido pues simplificar la página para simplemente que vaya mostrando dentro de una colección estática de hechistes y ya está. Todo se ejecuta en el navegador y bueno, va más rápido que antes y con mucho menos compromiso. Esta parte al menos ya la tengo lista y bueno sí, en una tarde y poco, así revisando cositas y con un poco de ecopilot al lado, pues ya lo tengo listo. Me falta pues empezar a pagar otra vez hosting y tenerlo publicado, que este pues ha sido el principal factor por el cual he perdido mis proyectos o vamos no están visibles desde hace mucho tiempo, porque soy un catalán, no vamos, soy un tacaño con sangre catalana que vio que no merecía la pena seguir pagando 50 euros al año por un hosting y me lo ahorro y claro luego me arrepiento y tengo que volver a empezar a volver a pagar otro dominio distinto, otro hosting distinto, volverlo a subir y configurar todo, ver que funcione, que no. Por lo menos con esto he hecho un ejercicio para que sea más mantenible convertido a imágenes docker en donde puedo especificar pues con esta versión y esta versión y al empalante. En el caso de los chistes de Persona 4 pues ha sido bastante fácil, sólo es un servidor html e y ya está. Luego el juego de estrategia pues era otro drama. Estaba totalmente basado en Node, en un framework que utiliza javascript desde el backend para atender todas las peticiones y hacer los cálculos en el juego y devolver el resultado y guardar la partida y si algo... si hay un gran inconveniente dentro del ecosistema de javascript es que todo se vuelve obsoleto en cuestión de semanas. Durante bastantes años javascript ha tenido esa fama de que cada día sale un framework nuevo, cada día cambian cosas, cada día hay nuevas dependencias, incluso para calcular si un número es paro y impar. Me agobia. PHP es mucho más estable. Seguramente ahora cogeré el proyecto tal cual lo tenga y no va a funcionar o se va a quejar de que todas las librerías que utiliza están obsoletas, así que también me tocará ponerme a actualizarlo. O bien dejarlo en versiones antiguas y arriesgarme a que se me cuele algún malware o algún ransomware otra vez. ¿Qué quiero decir con esto? Pues que la web se vuelve obsoleta a al cabo de pocos años. No es algo que compartan bastantes otros tipos de software. En videojuegos pasa más bien lo contrario. Tu hardware se vuelve obsoleto para juegos nuevos, a no ser que te limites a juegos indie de bajo presupuesto y que no tengan gráficos realistas ni llenos de partículas. A mí me gusta el concepto de tener un ordenador nuevo para jugar juegos viejos más rápido. Sí que los problemas de preservación de longevidad en videojuegos vienen por otro lado. Aparte de los life service cuyos servidores se apagan, cosa que también se aplica a multijugadores online. Consolas que dejan de funcionar al cabo de un tiempo. Tiendas online que cierran con el tiempo. Soportes del juego que también se oxidan o se deterioran. Puede pasar con los laser disc. Puede pasar también con cualquier disco óptico o con cualquier cartucho. De esto Rockli me comentó en algún momento que los cartuchos de nintendo ds por ejemplo no van a durar mucho tiempo. Igual que las tarjetas multimedia card que eran lo que se basaban. Por contra si abres por ejemplo Microsoft Word 97 en un Windows 95 pues seguramente te seguirá funcionando igual que en su momento. Podrás seguir trabajando con él y seguramente te dará muchos menos problemas que las últimas versiones de Microsoft Office. El problema ahí es tener un Windows 95 especialmente si está conectado a internet. Habrá un montón de malware por ahí pululando esperando entrar en sistemas antiguos como éste. Ahora bien, si es en un ordenador aislado y bien mantenido pues no debería haber problema. Mi padre músico estuvo trabajando durante mucho tiempo con un Atari ST con una versión propia de Cubase ST para hacer sus composiciones de música y le iba perfectamente. Y seguramente sigue funcionando porque nada se lo impide. No es algo que dependa de internet. No tiene ningún DRM, ninguna o bueno si lo tenía pues estará craqueado. Aunque sí que es un problema con el que nos enfrentamos muchas veces. Que este programa ahora tiene una nueva versión... ¡Ay! Es que ya no es compatible con Windows 95. Tienes que actualizar a Windows 2000. O tu navegador ya ya no sirve para esto. Internet Explorer 6 ya no sirve. Menos mal. ¡Ay! Es que Google Chrome 87.32 ya no es compatible con esto. Pero es que la versión 97 tiene una función que no me gusta. Pues te jodes. Este es un drama que tenemos en la informática, tanto en ordenadores como en móviles durante todas las décadas. Y bastantes compañías de software se preocupan más de ahorrarse trabajo, de ahorrarse presupuesto, de no tener que mantener 20 frentes distintos y que todo funcione en uno solo. Es por eso que en tu aplicación favorita pues a veces desaparecen funciones. Ya tienen métricas, ellos ya tienen telemetrías para comprobar qué se usa y qué no. Y ahí van comprobando, ¿merece la pena quitar esta función? ¿Cuánta gente se va a quejar si la quitamos? ¿Solo serán cuatro gatos? Nada, pues fuera. Un mantenimiento menos. Porque claro, cada vez que en un software se introduce algo nuevo, pues hay que comprobar que no rompe nada. En todo proyecto de software que se precie, pues hay una suite de tests automatizados, tests unitarios, de integración, etcétera, que se ejecutan para comprobar que cuando introduces un cambio en este sitio no afecta a todo lo demás. Que por añadir una línea más en la pantalla de título, no desaparezca la última opción porque se queda fuera de la pantalla. Así por poner un ejemplo muy gráfico. A mí me ha sucedido miles de veces hacer algún pequeño cambio de lógica que acaba afectando a otras cosas que no me imaginaba en absoluto. ¿Cuándo hay test para comprobarlo? Estupendo. ¿Cuándo no los hay? Pues es el cliente el que hace de test automatizado. La diferencia es que los test automatizados pues no se cabrían contigo. En otro programa me gustaría hablar sobre cómo guardar webs con contenido. Vamos, webs estáticas por lo menos que quieras preservar. Aunque por lo general te puede bastar con darle al menú archivo, guardar como o darle a imprimir en PDF. Ahora bien, en el caso de páginas interactivas en las que hacer cosas, en las que haya varias acciones disponibles, preservarlas está complicado. Ahí para empezar pues la guardas como PDF pierdes toda esa funcionalidad. En muchos casos no tiene sentido que las imprimas. Y si lo guardas como página web pues puede que funcione, puede que no. Si son acciones que se realizan sólo dentro de la página, pues puede que funcione. Si son acciones que tienen que interactuar con un servidor, por ejemplo para guardar algo, enviar algo, compartir, lo que sea, pues seguramente no va a funcionar. Y menos si ese servidor deja de estar disponible. Hasta aquí me desahogo, o sea, esto me lo tomo como lección de buscar la manera de preservar mis propios proyectos de software. Algunas maneras pueden ser muy cómodas, muy ágiles, pero a largo plazo no son sostenibles. Las aplicaciones web, al menos tal como las tenemos hoy día, no son sostenibles. Cuando programé algo en el futuro, por mi cuenta, pues... tengo que pensar en alguna manera que se pueda seguir ejecutando en el futuro. Así que ya lo sabes, titanio, si quieres que algo te dure toda la vida, presérvalo. Hasta pronto.
