Acciones

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.