Nuevo Comienzo

De vuelta

Hola, se que no he escrito en mucho tiempo, muchísimo tiempo.

Partiré diciendo que me cambie de sistema de blog desde Jekyll (ruby… puaj) a Hexo (nodejs) solo por salir de una tecnología que simplemente no va conmigo y tampoco le he dado el suficiente tiempo para entenderlo. Hexo es una plataforma para generar contenido estático (blog) a partir de archivos markdown, está desarrollado sobe NodeJS y todos sus componentes (plugins y themes) siguen la misma línea. Debo decir que hay muchos componentes que están bien des-actualizados y muchos de ellos con documentación en algo que parece ser Chino.

Ha pasado muchas cosas desde la última vez que escribí, tuvimos un estallido social en Octubre del 2019 y luego nos remeció una pandemia que nos estuvo encerrados un buen tiempo. De alguna forma ambos eventos forzaron al trabajo remoto y muchas empresas nos vimos obligados a adaptarnos a la nueva forma de trabajar y relacionarnos entre los diferentes equipos.

En Pandemia

En pandemia no había mucho que hacer (fuera de la casa) así que aplicamos creatividad y aprendí a hacer Pan Amasado y pan con Masa Madre (al igual que muchos). Esto debido a que en esos días salir a comprar el pan era de riesgo vital.

En mitad de la pandemia nos cambiamos de casa apenas se dió la oportunidad (los permisos de mudanza estaban cerrados). Ya instalados en el nuevo HQ comenzó la nueva aventura de colegio virtual. No fue fácil y menos para la Vale, no generó un vínculo con sus profesores a través de una pantalla. Por otro lado la Javi se adaptó de una forma increíble a los quehaceres del colegio.

Afortunadamente para nuestro rubro, la pandemia aceleró muchos procesos informáticos y como mencioné mas arriba, presionó para que el trabajo remoto se consolidara como LA nueva forma de trabajo. Muchas compañías necesariamente tuvieron que crear nuevos sistemas y aplicaciones para atender a sus clientes o darles la posibilidad de no ir a hacer un tramite presencial (no se podía), lo que de alguna forma benefició a muchas empresas de desarrollo.

Estando encerrado aprendí cosas muy básicas sobre mantenimiento de guitarras (no quiero decir lutheria porque estoy a años luz de ese conocimiento) para justamente echarles una “manito de gato” a mis guitarras. Fue tanto el entusiasmo que me armé una guitarra que compre en Amazon, un kit DIY Do it yourself estilo PRS.

Por supuesto que no fue fácil y creo que las dos etapas críticas fueron pegar el mástil al cuerpo y la “pintura”, en ese orden de complejidad. Digo “pintura” pero en realidad es una técnica de teñido de la madera con tinturas basadas en anilina y agua. Les dejo parte del proceso:

Ahora esa guitarra es una de mis favoritas por varias razones, tiene un sonido único como hecha para tocar metal, es cómoda y tiene un sustain exagerado. Por lo demás es escala 25” con 24 trastes lo que la hace distinta de las demás guitarras. Cosas que le faltan, aparte de un buen guitarrista XD, mejorar la entonación y cambiar el puente porque lo rompí y no hay repuesto. Afortunadamente la cuerda mas difícil de todas la G quedó perfectamente entonada para el calibre de cuerdas que usa esa guitarra.

Eso es todo por hoy… iré agregando mas contenido a mi blog que dicho sea de paso tiene 19 años (ni yo me lo creo).

Cambio de casa, adiós Octopress bienvenido Jekyll

Estoy de mudanza de blog, adiós Octopress bienvenido Jekyll.

Una de las razones que me empujó a cambiarme de sistema de blog, es que Octopress esta sacando la versión 3 desde el 15 de enero del 2015, esta algo abandonado (ver los commits).

La pregunta era… ¿ hacia donde migro ?

Octopress se basa en Jekyll y la organización de los artículos es básicamente la misma. Pero no todo es tan fácil. Octopress tiene un conjunto de plugins que facilitan y ayudan a embellecer los artículos, por ejemplo, para destacar código fuente, citas, imágenes y video.

Jekyll de alguna u otra forma también tiene plugins para lo mismo, el problema es que hay que modificar todos los artículos donde fueron usados los plugins de Octopress y modificarlos al gusto de Jekyll.

Siguiente problema, elegir un lindo (?) tema para el blog, después de un largo recorrido buscando, encontré Minimal Mistakes, bien lindo, personalizable, con gran capacidad de extender y todas esa funcionalidades que a los developers nos enamoran (pero que jamás usamos al 100%). De todas formas, la instalación de este tema no fue sencillo, demasiadas configuraciones y cosas que no andan a la primera y la documentación, que es bien buena, no dice las cosas clave.

Algunas características de Jekyll son:

  • Posee muchos plugins
  • Esta escrito en ruby (puaj)
  • Tiene varios mecanismos de importación desde otros blogs.
  • El contenido se genera a partir de documentos escritos en markdown
  • Como el contenido es texto, estos se pueden mantener fácilmente en git

Si ve errores, considere que el blog esta en rodaje y sea amable… reporte el bug.

Migrando mi blog a Octopress

Ayer tomé la decisión de migrar mi blog en wordpress a algo mas liviano y que no consumiera parte de lo escaso que me queda de server. Les recuedo que mi server no es ninguna maravilla, es más, califica como WC.

1
2
3
4
5
processor	: 0
vendor_id : GenuineIntel
model name : Intel(R) Pentium(R) 4 CPU 2.40GHz
cpu MHz : 2399.962
address sizes : 36 bits physical, 32 bits virtual

Por otro lado quería darle un poco mas de utilidad a una de las raspberry-pi que compré hace un tiempo, así que me decidí y manos a la obra.

Elección de un buen sistema de blogging

Hace rato estaba mirando el cómo github publicaba los blogs de contenido estático con los dominios de los usuarios. Muchos lo hacen con algunas herramientas provistas por github y otros con herramientas que generan contenido a partir de archivos de textos escritos en algún lenguaje, uno de los más usados es Markdown Language

Jekyll-bootstrap y Ruhoh

Acompañado de un buen lenguaje hay que elegir un sistema de contenido que lo soporte, desde antes ya estaba mirando Jekyll-bootstrap y se veía bien prometedor, hasta que el creador lo deprecó para iniciar un nuevo proyecto. El nuevo proyecto se llama Ruhoh y tiene una lista interesante de funcionalidades, tales como:

  • Soporte para Markdown
  • Template con Mustache
  • Administración del contenido con GIT
  • Gestión mediante línea de comandos
  • Open Source, MIT License

Octopress

Entre los tantos twitts inútiles y de fútbol que pone @cereal_bars, escribió acerca de Octopress. Cumple con la mayoría de las funcionalidades que andaba buscando además de ser simple y lo mejor de todo, es que hay algunas herramientas de migración desde wordpress a Octopress. Con esto último me quedé.

Migración de Wordpress a Octopress

Hay una herramienta super simple Exitwp que toma un export hecho desde wordpress y lo convierte en archivos markdown, listo para poner en Octopress. Algo importante de remarcar, no hace migración de contenido estático desde wordpress, es decir, las imágenes subidas a WP las debes mover manualmente.

Siguiendo el paso a paso no tendrán ningún problema.

Usando Octopress

Octopress trae un par de tareas en rake para que puedan levantar un webserver y poder mirar como esta quedando su blog antes de ponerlo en “producción” o hacer deploy. Veamos un par de pasos para usar Octopress.

Primero hay que descargar Octopress desde el repositorio en github

1
$ git clone git://github.com/imathis/octopress.git octopress

Debemos asegurarnos de tener ruby (al menos la 1.9.3) instalado en el sistema, les recomiendo que usen rvm sino tienen permisos de root.

1
2
$ ruby --version
$ gem install bundler #instalación de bundler para administracion de dependencias (gems)

Luego nos metemos dentro del directorio Octopress y ejecutamos la instalación de las gemas con bundler

1
$ bundler install

Finalmente instalamos el theme por omisión de Octopress

1
$ rake install

Ahora a bloggear con Octopress

Gestión del contenido con git

Primero deben cambiar el origin del repositorio que clonaron y apuntarlo a un nuevo origin (su repo).

1
2
3
$ git remote rm origin                  # borrar origin
$ git remote add origin user@host:su-repo.git # agregar nuevo origin
$ git push origin master # push al nuevo repo

Ahora para crear un nuevo post solo deben ejecutar una tarea con rake de la siguiente forma:

1
$ rake new_post["Titulo de su nuevo post"]

Esto creará un archivo dentro del directorio ./source/_posts/ listo para ser escrito. Una vez escrito el post solo deben agregar el archivo al repo git y hacer commit, push, pull y todo lo que saben hacer con git para administrar sus versiones.

Para poder pre visualizar el contenido generado pueden hacer lo siguiente:

1
2
$ rake generate # genera el contenido estático (html)
$ rake preview # levanta el servidor web

Esta última instrucción levanta un servidor web para que puedan pre-visualizar el cómo esta quedando el blog y jugar con el. Si quieren hacer cambios en caliente e ir mirando deben ejecutar.

1
2
3
$ rake generate # genera el contenido estático (html)
$ rake watch # esto mira los cambios y regenera el contenido
$ rake preview # levanta el servidor web

Infraestructura

Como les había mencionado, quería ahorrar algunos ciclos de cpu de mi WC porque esta algo colapsado, así que decidí usar una raspberry-pi como webserver con Nginx. Para poder hacer que todo quedara automatizado con git, tuve que hacer un par de artilugios que me permitieran que al momento de hacer un push en una rama especifica (master) se publicara el nuevo post o modificación que se le haya hecho al sitio.

Octopress trae una tarea rake para hacer deploy, deben mirar el archivo que se llama Rakefile

Todo junto: git + gitlab + jenkins + ssh + rsync + nginx

Les explico el ciclo completo para que entiendan las herramientas que estoy usando para la automatización.

  • Git: no hay mucho que explicar ;)
  • gitlab: es un administrador de repositorios git muy interesante, recomendado.
  • jenkins: servidor de integración continua y otras vainas
  • ssh: algo que decir? god bless you damn SSH
  • rsync: después de las papas fritas y el ketchup, el mejor invento para sincronizar archivos.

Al momento de hacer un push en el servidor git (gitlab) a través de un web-hook se detona una tarea en jenkins, en jenkins se crea una serie de configuraciones que ejecutan las tareas rake de generación del contenido estático y luego hace el deploy del sitio. Aquí entra a jugar rsync + ssh ya que finalmente hace el deploy en la raspberry-pi que sirve el contenido a través de nginx. Omití todas las configuraciones de claves ssh publicas que hay que pasear por todos los involucrados.

Con esto queda automatizado todo el proceso desde que se hace un push en la rama que Jenkins esta construyendo.

Espero les sirva y se animen con Octopress, esta bien interesante. Vean su documentación esta bien completa.