En los últimos años, JavaScript se ha expandido de manera increíble. Aplicaciones complejas, frameworks y lenguajes que compilan a JavaScript han sido desarrollados para crear interfaces y experiencias ricas y complejas. Yo empecé a usar React en el trabajo en 2017 en una aplicación que realmente requería el uso de dicha librería. A mí me gustó trabajar con React y lo utilizaba siempre que podía. Es así pues que terminé escribiendo mi web personal en React, en retrospectiva una pésima idea pues mi web no mostraba nada sin JavaScript, afectando el SEO y reduciendo la velocidad de carga.
Hoy, finalmente, reescribí este website agregando unos grandes cambios que he estado planeando por un tiempo:
- La web es generada de manera estática usando Kotlin
- La página web ya no requiere JavaScript para ser renderizada.
- Los artículos son escritos en Markdown
- Soporte para múltiples idiomas para plantillas y artículos
- Las plantillas (templates) son definidas en Kotlin usando Kotlinx HTML DSL. (Similar a JSX pero fuertemente tipado)
- Hay un dev server que recarga las páginas cuando el código cambia (inspirado en react-hot-loader)
Estos proyectos e ideas (en inglés) han influenciado el diseño de mi website:
- La pequeña web: Aral explica los problemas de la web centralizada que domina hoy. Él trabaja con Laura Kalbag para reducir la dificultad de crear sitios web independientes.
- Protolo Gemini: Gemini es un protocolo más ligero y seguro que HTTP. No existe el concepto de scripts en los clientes (Correcto, no hay JS). Aun así puedes hacer login usando llaves asimétricas y existen aplicaciones similares a reddit o twitter, etc.
- htmx AJAX, CSS Transitions y WebSockets en atributos HTML. Permite usar HTML como el motor del estado de una aplicación web, reduciendo significativamente la necesidad de usar JSON o escribir JavaScript
- website < 14kb endtime.dev's article on the significant performance improvement that smaller web pages gain.
Ahí lo tienes, creo que estos cambios me permitirán experimentar y crear con mayor facilidad. Ya veremos...