El auge de los generadores de sitios en texto plano

Hace ya casi una década cuando uno desarrollaba su página web con Dreamweaver o con FrontPage.

Como todo lo antiguo vuelve, en pleno siglo 21th y tras haber superado la web 2.0 y la 3.0 resulta que lo cool ahora es editar de nuevo tu web en local o a través de tocar los ficheros de contenido directamente.

Y aunque hay algunas diferencias, y ha llovido mucho, volvemos a escribir contenido web desde nuestro ordenador y una aplicación de escritorio.

Los motivos son muy diferentes. Y aunque el porcentaje de penetración de Wordpress y otros blogs de edición online siguen siendo mayoritarios, ahora tenemos entornos completos de creación de webs sin necesidad de bases de datos, loque ahora se llama Flat-File-CMS o Static Web Generators.

Tenemos que distinguir entre dos tipos. Sistemas desarrollados en PHP que trabajan con ficheros de texto, y generadores de webs. y En ambos casos de forma predominante, el contenido se escribe en formato Markdown, pero el resultado es diferente a la hora de trabajar, aunque visualmente un usuario no podría distinguir si una web está hecha con un sistema u otro.

La ventaja, además de poder escribir más rápido y concentrarse en el contenido y no en la forma en que se muestra, es que, al no usar base de datos, la carga de la web es mucho más rápida.

Por otro lado las webs generadas estáticamente ni tan siquiera necesitarían de PHP, u otro soporte de lenguaje de programación en el servidor web. Cualquier espacio web incluso Github podría ser hosting para este tipo de webs.

Del primer grupo estos serían los proyectos más interesantes:

Flat File CMS

  • Pico CMS. Es todo un clásico, funciona sobre PHP con plantillas TWIG, soporte de contenido en Markdown y un buen puñado de templates.
  • HTMLy. Más reciente, permite editar online el contenido y tiene interfaz de administración. Este blog está funcionando sobre este proyecto.
  • Grav. Un proyecto interesante, también funcionando sobre Twig, Symfony y muy extensible con una buena cantidad de plugins. También permite edición online así como configuración con ficheros YAML, generación de tipos especiales de contenido. En definitiva,un sistema muy versátil.
  • Dokuwiki. Lleva años con nosotros, un wiki rápido de editar, ideal para documentar proyectos, edición online y todo almacenado sobre ficheros. El backup es trivial, solo hay que copiar toda la carpeta a otro sitio para tenerlo funcionando.

Static Web Generators

  • Hexo. Genera una web estática con NodeJS. Dispone de diferentes temas para modificar el aspecto del resultado.
  • WinterSmith. También sobre NodeJS, fue de los pioneros aunque muy básico comparado con los demás.
  • MkDocs. Si has escrito documentación en Markdown,seguro que te suena, o al menos su theme por defecto, multitud de proyectos lo usan para generar la web de documentación. Funciona sobre Python, que necesitarás tener instalado.
  • Sculpin. Sobre PHP y TWIG, genera webs estáticas, y no necesitarás posteriormente PHP para visualizar el resultado.
  • Hugo. El ganador por goleada es Hugo,un sistema versátil, al estar hecho en GO, solo necesitas un ejecutable disponible en Windows, Linux y Mac para generar tu web a partir de Markdown. Tiene un catálogo de themes impresionante para el poco tiempo que lleva. Sin duda el más recomendable.

Ahora solo te queda elegir el que más te guste.

Descubriendo las aplicaciones compiladas en Go

Hace poco tiempo que estoy profundamente interesado en Go, no tanto como lenguaje, que me parece atractivo, sino todas las aplicaciones que se han creado con este lenguaje.

La principal ventaja de las aplicaciones creadas con Go es que se compilan en un solo ejecutable, por lo general puedes compilar ejecutables para Windows, Linux y MacOSX con el mismo código, simplemente diciendo al compilador, para que sistema quieres sacarlo.

Luego Go es un lenguaje que genera código compilado próximo a C o C++, por lo que su velocidad de ejecución es muy rápida, y además pensado para facilitar las tareas concurrentes utilizando varios procesadores. El resultado es siempre unas aplicaciones de gran rendimiento y escalabilidad.

El sitio para buscar aplicaciones hechas en Go es GoLandLibs, busca por la etiqueta applications.

Estas son las aplicaciones en Go que más me gustan y uso:

  • Sup. Una herramienta tipo Deployer para lanzar comandos remotos a multitud de servidores en paralelo, como hace Ansible, Capistrano, Deployer, y otros, pero más sencillo y rápido.
  • Capze. Genera una estructura de despliegue tipo Capistrano rápidamente, se integra muy bien con Sup.
  • Restic. Permite generar backups y backups incrementales rápidamente, más rápido que duplicity.
  • Duplicacy. Aún mejor que Restic, permite subir el backup a múltples servicios online de disco: S3, Onedrive, Google Drive, Dropbox, FTP, etc...
  • LNAV. Un visor de logs hypervinaminado, multitud de utilidades como leer directamente de históricos guardados en TGZ sin tener que cambiar de fichero.
  • Hugo. Un generador de webs estáticas. Para qué necesitas Wordpress si puedes tener algo como esto...
  • Fast Reverse Proxy. Permite montar un proxy que exponga los puertos de ordenadores dentro de un NAT a una IP pública. Muy rápido y gran utilidad para desarrollar servicios web en modo pruebas.
  • Minio. Directamente todo un servidor S3 personal en un solo ejecutable. Impresionante.
  • Caddy. Un servidor web con soporte para HTTP2, certificados, gran rendimiento y fácil configuración en un solo fichero. Lo uso principalmente para no tener que montar un Apache o Nginx en un entorno de desarrollo, el fichero de configuración puede ir en el mismo repo GIT y arrancar el proyecto en segundos arrancando las dependencias al mismo tiempo (servidor MySQL, Redis, o lo que sea).
  • NATS. Uno de los grandes descubrimientos, gestiona un sistema de paso de mensajes Pub-Sub y gestión de colas de forma instantánea sin grandes requerimientos como pasa con RabbitMQ. Permite montar cluster del servicio de forma sencilla y aguanta cientos de miles de mensajes por segundo.
  • Aurora. Si buscas un servidor de Beanstalk rápido y sencillo esto es lo que necesitas.
  • Fabio. Un balanceador para microservicios web. Muy rápido.
  • MeshBird. Genera una red virtual distribuida entre tus servidores, contenedores Docker, ordenadores personales y lo que quieras. Muy bueno.
  • GoRush. Un servidor de notificaciones push propio, para no depender de Pushbush y otros...
  • ImageServer. Todo lo que necesitas para recortar, retocar imágenes, resamplear y lo que te imagines como microservicio web con API.
  • Flynn. Escala de forma horizontal servidores de bases de datos o aplicaciones a través de contenedores docker de forma transparente y automática.
  • GoGS. Impresionante, tu propio Github, mil veces más fácil de instalar que Gitlab.

Como veréis hay proyectos muy interesantes usandose en sistemas de producción enormes. y con una fiabilidad asombrosa.

Habrá que estar atentos a los proyectos que vayan surgiendo con este lenguaje.

Web migrada a FlatCMS

Han pasado casi dos años desde que empecé y dejé de escribir en este blog.

En este tiempo, han intentado forzar el Wordpress con mil problemas de seguridad, me han hackeado la web varias veces y he tenido que recuperarla otras tantas.

Todo para que al final ni tan siquiera escribiese. Así que finalmente he decidido pasarme al Markdown y a un FlatCMS sin plugins, sin extensiones ni problemas.

Ha sido un poco pesado convertir los posts a Markdown, pero al menos ya está todo listo. Probaremos que tal va este HTMLy.