MARKDOWN

Hace poco más de 4 años empecé a escribir en el blog porque era necesario disponer de un espacio en donde plasmar aspectos o pensamientos y redactar algunas recetas para problemas que me han ocurrido. Más lento que rápido la producción allí ha estado. Escribir es un proceso que lleva su tiempo dependiendo del volumen de contenido.

En todo este tiempo se ha transformado el proceso de escritura. Anteriormente a este blog existía otro donde el contenido tenía que ver con música y eventos. Por ello dar el salto a WordPress no fue tan complicado a sabiendas que las posibilidades son mejores y mayores.

De un inicio, a escribir directamente en la página o en la aplicación a, ahora, tener el control de las entradas ha sido parte del proceso. No me gustó del todo a escribir directamente en la plataforma de WordPress a pesar de la posibilidad de guardar lo escrito. Sí está la opción de escribir directamente en HTML pero de por sí la producción es lenta así, más lo será al estar lidiando con las etiquetas.

La solución perfecta ha sido escribir todas las entradas en Markdown y ponerlas en carpetas correspondientes para su ordenación. También almacenarlas aparte de localmente, en la nube, para así disponer de ellas y seguir escribiendo con independencia de la plataforma.

Markdown, al igual que HTML es un lenguaje de marcado, solo que más simple tanto en su escritura como en su lectura. Es como escribir en texto simple con algunos caracteres especiales para definir estilos o elementos específicos, como el texto en negritas o algún enlace hacia alguna página. Así que para ello no se necesita más que un editor de texto y recordar unas cuantas instrucciones de marcado.

ATOM

Como editor de texto utilizo Atom para escribir las entradas en su modo para Markdown, el cual realza la sintaxis, dispone de atajos de teclado, de un visor sincronizado para ver lo escrito y más opciones disponibles en su configuración. Igualmente escribo en otros editores como Emacs, Visual Studio Code, Sublime Text o específicos para la tarea como Typora, pero me acomodo más con Atom. Porque incluye agregados que hacen que generar y escribir las entradas sea un proceso más agradable y eficiente.

Con instalar los paquetes language-markdown, markdown-toc, tool-bar-markdown-writer, markdown-writer y markdown-preview-enhanced se obtiene un marco de trabajo eficiente y súper vitaminado para escribir en Markdown. Mientras que con el primero se realza la sintaxis e incorpora soporte para gramáticas afines, con el segundo se genera tablas de contenido para una mejor organización del documento, con el tercero se agrega una barra para insertar los elementos sintácticos y con el último se vitamina al editor porque permite volcar el trabajo en alguna ingeniería de blogging estático.

Mientras un blog dinámico trabaja con una base de datos para gestionar el contenido, un blog estático trabaja con archivos de texto que se compilan para generar un sitio completo que posteriormente es alojado en algún sitio. Plataformas para generar blogs estáticos hay varias como Jekyll, Octopress, Hexo y con Atom se puede trabajar con ellas.

JEKYLL

Jekyll es una plataforma para crear y trabajar con sitios de manera estática, evitando lidiar con bases de datos y actualizaciones de la plataforma o pluggins permitiendo centrarse en el contenido. Al ser una herramienta que no se aloja en el servidor hay que instalarla en nuestro equipo.

  1. Antes que nada se descarga e instala el ambiente de desarrollo de Ruby, que es un lenguaje de programación sobre el que se basa la plataforma. Con buscar ruby en el administrador de programas o paquetes o mediante la terminal se puede instalar. En el caso de Arch Linux, que es donde escribo en estos momentos lo instalé así: pacman -S ruby.
  2. Ahora toca turno de instalar Jekyll y sus gemas. Desde la terminal se escribe gem install jekyll bundler. Esto se hace como usuario normal.
  3. Con Jekyll instalado y funcionando en el equipo es turno de generar todo lo necesario para nuestro sitio. Primero creamos la carpeta donde guardar los archivos del sitio con la orden jekyll new nombre_del_blog y posteriormente nos cambiamos hacia ella: cd nombre_del_blog.
  4. Ahora toca turno construir el sitio y hacerlo disponible para el servidor local: bundle exec jekyll serve
  5. En caso de mostrar errores hay que hacer lo siguiente:
  • Agregar la ruta donde se instaló Jekyll y sus gemas a la variable PATH, en mi caso $HOME/.gem/ruby/2.7.0/bin
  • Ejecutar bundle init para crear el archivo Gemfile que se encarga de describir las dependencias de gemas
  • Ejecutar bundle update para actualizar nuestras gemas
  • Ejecutar bundle install para agregar alguna gema faltante
  1. Finalmente en un navegador abrimos la dirección http://localhost:4000.

Tras esto ya tenemos todo listo para ver cómo queda nuestro blog. Solo resta escribir las entradas y configuración extra que menciono más adelante.

NUBE

Las entradas las alojo y sincronizo en la nube de Google Drive para tener un respaldo y poder meterle mano cuando y donde lo desee. Lo tengo ordenado por años mediante el modo de generación de nuevas entradas de Markdown de Atom. Ya habiendo escrito, revisado y definido la entrada con un simple copiar y pegar ya está disponible en WordPress.

La carpeta padre del blog es aquella que se generó mediante Jekyll y ésta se puede replicar en algún otro dispositivo para poder seguir escribiendo. En Atom se indica esto para que de allí automáticamente cuelgue correctamente el sitio para su edición.

Existe la posibilidad de alojar el sitio en Github Pages de manera gratuita con nuestra cuenta iniciando un repositorio para ello. La integración con Jekyll está implementada haciendo la tarea de generar contenido más eficiente y sencilla.

Por ahora, lo importante es el contenido y no tanto la parte estética del blog. Aunque sí me gustaría más pero hay que invertir. No tiene caso por el momento pagar un host dado que la producción de entradas es distanciada. Aunque más adelante me gustaría cambiar cuestiones estéticas pero es otra chambita.

AJUSTES EXTRAS

En la carpeta padre se generaron varios archivos. Uno de ellos es _config.yml en el cual podemos modificar valores referentes al sitio tales como el nombre, la dirección, los plugins, entre otros. Para mayor referencia se puede observar el archivo referido del autor del proyecto de markdown-writer en su repositorio aquí. De hecho eché ojo aquí para solucionar un problema que tenía con la asignación de categorías y etiquetas.

Por otra parte, en Atom también hay que configurar una parte para fijar valores necesarios para la ubicación precisa en la jerarquía de carpetas. Esto se hace en el archivo _mdwriter.cson. A continuación un extracto de lo esencial.

# Static engine of your blog
# - One of: general, html, jekyll, octopress, hexo
siteEngine: "jekyll"
# Website URL of your blog
siteUrl: "http://127.0.0.1:4000//"

# Root directory to your blog
# - Leave it empty to use the current project path (recommended)
siteLocalDir: ""
# Directory to drafts from siteLocalDir
siteDraftsDir: "_drafts/"
# Directory to posts from siteLocalDir
sitePostsDir: "_posts/{year}/"
# Directory to images from siteLocalDir
# - E.g. to use the current filename directory, can use {directory}
siteImagesDir: "/images/{year}/{slut}/"

# URLs to tags/posts/categories JSON files
# https://github.com/zhuochun/md-writer/wiki/Settings-for-Front-Matters
urlForPosts: "http://127.0.0.1:4000//blog/posts.json"
urlForTags: "http://127.0.0.1:4000//blog/tags.json"
urlForCategories: "http://127.0.0.1:4000//blog/categories.json"

# The front matter key name
frontMatterNameTags: "tags"
frontMatterNameCategories: "categories"

# Filename format of new drafts created
newDraftFileName: "{slug}{extension}"
# Filename format of new posts created
newPostFileName: "{year}-{month}-{day}-{slug}{extension}"

# Front matter add custom fields
# - Configured as a key-value pair (fieldName: defaultValue)
# - Referenced by fieldName
frontMatterCustomFields:
  author: "yo"
# Front matter date format, determines the {date} in frontMatter
frontMatterDate: "{year}-{month}-{day} {hour}:{minute}"
# Front matter template
frontMatter: """
---
author: "{author}"
layout: "{layout}"
title: "{title}"
date: "{date}"
---
"""

# File extension of posts/drafts
fileExtension: ".md"
# File slug separator
slugSeparator: "-"

El blog sigue vivo y con muchas entradas pendientes a publicar que con certeza saldrán en algún momento. Aun así, veo que la cantidad de borradores es mayor que las entradas publicadas. De cualquier manera la necesidad me obliga a publicar más entradas ya que me he visto en aprietos donde requiero de mis recetas y recompilar la información de internet es hacer doble trabajo.

¡ACTUALIZACIÓN!

Creo recordar que tuve que reinstalar Arch Linux en octubre o noviembre del año pasado y ahora reinstalar Jekyll y todo lo demás. Todo lo hice conforme indiqué en el apartado de Jekyll exceptuando el punto 3 puesto que ya tenía generados los archivos del blog en la carpeta que se crea. Todo sin problemas para continuar editando entradas para el blog.